从用户读取其中之一时,为什么不显示“ Ellie” ==“ Ellie”? - java

以下问题来自几周前我进行的一次测验,结果有误,但未提供答案:

考虑以下代码,其中不包含编译错误:

String secret = "Ellie";
Scanner kb = new Scanner(System.in);
System.out.println("Guess which name I'm thinking of:");
String guess = kb.next();

if (guess == secret)
{
    System.out.println("Wow! You're smart!");
}
else
{
    System.out.println("Wrong!");
    System.out.println("You guessed: " + guess);
    System.out.println("The correct answer was: " + secret);
}

假设用户在提示符下输入“ Ellie”。
将产生什么输出?为什么输出该输出而不显示其他输出?

这是我不正确的答案:

输出将是else语句“ WRONG!”。因为字母'E'的大写。一个解决方案是
可以将String密码更改为“ ellie”以及用户的猜测,也可以将ignoreCase关键字写入
字符串秘密。

该程序实际上输出了“错误”,我对此进行了测试。

除了简单地知道答案之外,还有人能真的向我解释这个问题,以便我更好地理解这个概念吗?

参考方案

==会进行引用比较,因此即使两个字符串引用相等,也会始终说“错!”。为了使其正确匹配,必须使用secret.equals( guess )

“ finally”子句在异常处理中的好处 - java

作为对此的新手,在异常处理中使用finally子句有什么好处。换句话说,什么时候最好使用它,什么时候最好不要使用它。我唯一想到的就是关闭输入/输出流……还有其他好处? 参考方案 StinePike撰写的任何内容都很完美,但我想在其中添加一些内容。无论是否发生异常,都将执行finally块...。因此,我们可以通过在try块以及catch block()中写入…

Java:找到特定字符并获取子字符串 - java

我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

为什么新的FileWriter(“ abc.txt”)创建一个新文件而新的File(“ abc.txt”)却没有? - java

new File("abc.txt")不会创建实际文件,而new FileWriter("abc.txt")会在磁盘上创建文件。在查看源代码时,我发现new FileWriter("abc.txt")最终创建了一个文件,如new File() 参考方案 类java.io.File的构造方法不会在磁盘…

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…