Java中相等的字符串(==)并不相等?

3
这段Java代码为什么不能正确运行?if语句总是被读取为False,无论输入是什么,包括Anish和“Anish”,输出始终为4。此外,这可能是一个重复的问题。Strings in Java : equals vs ==
import java.util.Scanner;  
public class lkjlj {  
    public static void main(String args []) {  
        Scanner Pillai = new Scanner(System.in);  
        System.out.println("Enter Your name");  
        String nabeel = Pillai.nextLine();  
        System.out.println(nabeel);  
        if (nabeel == "Anish") {  
            System.out.println("Your Age is 6");  
        } else {
            System.out.println("Your age is 4");  
        }
    }  
}

作为一种风格,你应该使用小写的 pillai 而不是大写的 Pillai。大写的单词通常用于类名。 - hugomg
3个回答

12

在进行字符串比较时,应使用.equals而不是==。


3
+1 很好的答案,尤其对于刚入门Java的OP来说,如果有解释为什么特别好。幸运的是其他人已经提供了解释。 - Boro
考虑到这个问题已经被问了很多次,我觉得没必要详细回答它。我知道它会很快被关闭为重复问题。 - Paul Tomblin

10

使用以下代码:nabeel.equals("Anish")

在Java中,String.equals检查两个字符串是否具有相同的内容,而==检查它们是否为相同的对象


8

使用

if(nabeel.equals("Anish"))
{
...
}

因为在比较字符串是否相等时,不要使用 ==。== 运算符用于检查两个对象是否完全相同。两个字符串可能是不同的对象,但具有相同的值(其中包含完全相同的字符)。使用 .equals() 方法来比较字符串是否相等。


+1 @Srinivas Reddy Thatiparthy @Jen 解释得很好。 - Boro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接