关于比较两个字符串

And*_*085 1 java string

可能重复:
如何比较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!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Eng*_*uad 11

if (hi == "hello") {
Run Code Online (Sandbox Code Playgroud)

应该:

if (hi.equals("hello")) {
Run Code Online (Sandbox Code Playgroud)

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