-1

我刚开始学习JAVA。
我正在编写一个非常简单的程序来根据命令行参数打印一些东西。
但它没有按预期工作。

这是我的程序和输出。

在此处输入图像描述

它应该打印“e”,但它正在打印“n”。

请告诉我我在哪里做错了。

4

2 回答 2

2

字符串必须与 进行比较String.equals(),因为==操作符只会检查引用是否指向同一个对象。

if ("e".equals(e)) {
  // they are equivalent strings
}
于 2013-10-16T00:11:04.493 回答
0

不要对六氰化物答案的语法挑剔,而是将字符串与“e”进行比较,我认为更符合逻辑和更清晰的是:

if (e.equals("e")) { /* e == "e" */ }

因为它说:如果我们找到的字符串 e 是我们正在寻找的,在这种情况下是“e”,那么做一些事情。

另一个原因是“e”此时只是一个字符数组,而 e 已经是一个字符串。现在我不是 100% 确定这一点,但我认为 equals 方法在字符数组的某个地方有一些更有效的覆盖方法。如果您将“e”放在 .equals 前面,则“e”首先转换为字符串然后进行评估,也就是说,如果编译器没有优化它。

于 2013-10-16T00:28:36.910 回答