关于比较两个字符串

时间:2012-10-14 07:15:42

标签: java string

  

可能重复:
  How do I compare strings in 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”make“Hello!”出现在下一行?

5 个答案:

答案 0 :(得分:11)

if (hi == "hello") {

应该是:

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

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

答案 1 :(得分:3)

你正在以错误的方式比较字符串......

How do I compare strings in Java?

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

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

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

答案 4 :(得分:1)

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