【问题标题】:Command line arguments in Java [duplicate]Java中的命令行参数[重复]
【发布时间】:2013-10-16 08:28:36
【问题描述】:

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

这是我的程序和输出。

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

请告诉我哪里做错了。

【问题讨论】:

  • 推荐使用 IDE。许多人会为你标记这个。
  • 感谢 vandale。但我认为我们应该从记事本开始。 IDE 会帮我改正,小东西我学不会。

标签: java command-line-arguments


【解决方案1】:

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

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

【讨论】:

  • " == 运算符只会检查对对象的引用是否相等" - 不! == 运算符检查引用是否指向相同的对象
  • 会纠正的 - 谢谢。
【解决方案2】:

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

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

因为它说:如果我们找到的字符串 e 是我们正在寻找的,在本例中是“e”,那么就做点什么。

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

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    相关资源
    最近更新 更多