JAVA的startsWith有关问题

本人现在是在自学JAVA,属于小学生级别.
今天发现一个问题,正常来说使用startsWith()判定字符串首,括号里面的东西不是要带上双引号""吗?
为什么这个代码不加双引号能运行成功,加了反而运行之后毫无反应,有没有师傅能讲讲其中的原委.
[代码在倒数第二行]

package com.woniuxy.package01;
import java.util.Scanner;
public class lessoon3 {
    public static void main(String[] args) {
//.contains()判断一个字符串里是否包含某个字符串,结果为布尔类型
//丛键盘输入姓氏,查询匹配的名单
        Scanner good = new Scanner(System.in);
        String[] str = { "王青", "苏小雨", "唐纯里", "王路玩", "姜藤椒", "姜子牙", "唐均" };
        System.out.println("请在下方输入需查询的姓氏");
        String a = good.next();
        for (String god : str) {
            if (god.startsWith(a)) {
                System.out.println(god);
            }
        }
    }
}

这里的 a 本身就是一个 字符串变量, 它的值实际上包含了 双引号" "; 如果你对a加上双引号,"a" 它不就是一个值为 a 的字符串嘛

img

参考GPT和自己的思路:

非常感谢您的问题,关于Java的startsWith()方法的参数问题,答案是:参数a是一个字符串类型的变量,如果这个变量已经存在且为String类型,则可以直接输入该变量名称,不需要在双引号中加上该变量的值。但是,如果你希望将该变量的值作为参数传递,那么在该变量名称的外面需要加上双引号。

而对于您提到的加了双引号运行后没有反应的问题,这可能是因为您输入的字符串和数组中的字符串并不匹配导致的。您可以在控制台输出变量a和数组中的字符串进行比对,查找出不匹配的地方。

参考GPT和自己的思路:

在使用startsWith()方法时,需要在括号内指定比较的字符串。如果你不加双引号,那么代码会将该字符串作为变量名来处理,如果没有定义该变量,就会抛出编译错误。因此,正确的做法是在括号内加上双引号,即:

if (god.startsWith("a")) {
  ...
}

另外,有可能你加上双引号后还是没有输出任何结果,这可能是因为输入的姓氏并不在名单中,或者输入的姓氏在名单中,但是该姓氏后面没有对应的名字。确保输入的姓氏和名单中的字符串完全匹配。