2013-10-16 80 views
-1

我刚开始学习JAVA。
我正在写一个非常简单的程序来打印基于命令行参数的东西。
但它不按预期工作。Java中的命令行参数

这是我的程序和输出。

enter image description here

它应打印 “E”,但它正在打印 “N”。

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

+0

使用IDE推荐。许多人会为你标记这一点。 – vandale

+0

谢谢vandale。但我认为我们应该从记事本开始。 IDE会为我做所有的修正,我将无法学习小的小东西。 – User42

回答

2

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

if ("e".equals(e)) { 
    // they are equivalent strings 
} 
+1

“==运算符只会检查对象的引用是否相等” - 不! ==运算符会检查引用是否指向**相同的对象**! – alfasin

+0

会纠正 - 谢谢。 – hexacyanide

0

为了不被挑剔六氰化物的答案的语法,但作为比较字符串等于“E”在我看来,更多的逻辑和清洁是:

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

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

另一个原因是“e”只是这个点上的一个字符数组,e是一个字符串。现在我不是100%确定这一点,但我认为equals方法在字符数组中有一些更有效的overriden方法。在将“e”放在.equals前面的情况下,首先将“e”转换为一个字符串,然后进行评估,即编译器是否优化该字符串。