1

可能重复:
如何比较 Java 中的字符串?

我是编程新手,我正在使用java。这是我写的一个程序:

class HelloApp {

    static String hi;

    public static void main(String[] args) {
        int length = args.length;
        if (length > 0) {
            hi = args[0];
            sayHi();
        }
    }

    static void sayHi() {
        if (hi == "hello") {
            System.out.println("Hello!");
        }
    }
}

我的问题是:为什么不输入“java HelloApp hello”使“Hello!” 出现在下一行?

4

5 回答 5

10
if (hi == "hello") {

应该:

if (hi.equals("hello")) {

==检查两个引用是否指向堆中的相同对象,同时equals()检查两个 String 引用是否指向具有相同 String 值的对象。

于 2012-10-14T07:21:14.400 回答
2

您以错误的方式比较字符串...

如何比较 Java 中的字符串?

static void sayHi() {
    if (hi.equals("hello")) {
        System.out.println("Hello!");
    }
}

这应该可以解决您的问题..

于 2012-10-14T07:22:07.003 回答
2

==测试引用相等,而不是字符串相等。您想.equals改用:

if (hi.equals("hello")) {
    ...
}
于 2012-10-14T07:22:09.093 回答
2

你在比较Strings 不正确。检查字符串是否相等的正确方法是 viastr.equals(anotherStr)str.equalsIgnoreCase(anotherStr)==运算符检查字符串是否指向相同的内存位置,而不是内容。

于 2012-10-14T07:22:26.300 回答
1

正如 neilvillareal 所说,您可以使用 str.equals(anotherStr) 或 str.equalsIgnoreCase(anotherStr) 方法,请参阅以下链接以了解 '==' 和 'equals/equalsIgnoreCase' 方法之间的区别:http://www。 java-samples.com/showtutorial.php?tutorialid=221

于 2012-10-14T09:08:38.243 回答