-1

可能重复:
Java String.equals 与 ==

主要代码:

String pass = getPassowrd();
    if(pass == "hi"){
        System.out.println("Correct Password");
        loggedin = true;
        new Home();
    }else{
        System.out.println("Incorrect Password");
    }

获取密码代码:

private static String getPassword() {
    java.util.Scanner keyboard = new java.util.Scanner(System.in);
    return keyboard.nextLine();
}

我究竟做错了什么?

谢谢,艾萨克

4

2 回答 2

2

您正在比较参考,.equals用于检查String内容,替换

if (pass == "hi") {

if (pass.equals("hi")){
于 2013-02-02T01:27:34.170 回答
1

做 apass.equals("hi")而不是pass == "hi"
With an ==operator 你真正比较的是引用,即你正在比较 pass 中的值,它只是它在内存中指向的字符串的地址和指向常量字符串 "hi "存储在内存中。

使用 equals 时,您实际上是在将字符串“hi”与 pass 指向内存中的字符串进行比较。

于 2013-02-02T01:28:45.957 回答