我刚开始学习JAVA。
我正在编写一个非常简单的程序来根据命令行参数打印一些东西。
但它没有按预期工作。
这是我的程序和输出。
它应该打印“e”,但它正在打印“n”。
请告诉我我在哪里做错了。
我刚开始学习JAVA。
我正在编写一个非常简单的程序来根据命令行参数打印一些东西。
但它没有按预期工作。
这是我的程序和输出。
它应该打印“e”,但它正在打印“n”。
请告诉我我在哪里做错了。
字符串必须与 进行比较String.equals()
,因为==
操作符只会检查引用是否指向同一个对象。
if ("e".equals(e)) {
// they are equivalent strings
}
不要对六氰化物答案的语法挑剔,而是将字符串与“e”进行比较,我认为更符合逻辑和更清晰的是:
if (e.equals("e")) { /* e == "e" */ }
因为它说:如果我们找到的字符串 e 是我们正在寻找的,在这种情况下是“e”,那么做一些事情。
另一个原因是“e”此时只是一个字符数组,而 e 已经是一个字符串。现在我不是 100% 确定这一点,但我认为 equals 方法在字符数组的某个地方有一些更有效的覆盖方法。如果您将“e”放在 .equals 前面,则“e”首先转换为字符串然后进行评估,也就是说,如果编译器没有优化它。