Java 对于字符串比较,==为什么返回true?
我之前问过一个关于比较两个字符串的问题,他们告诉我应该始终使用.equals 但是,我不明白为什么会这样:Java 对于字符串比较,==为什么返回true?,java,string,Java,String,我之前问过一个关于比较两个字符串的问题,他们告诉我应该始终使用.equals 但是,我不明白为什么会这样: String y= "Mary"; String x= "Mary"; System.out.print(x==y); 这将是真的,我不明白为什么 因为这两个字符串具有相同的引用标识,这是因为它们来自池。如果要向其中一个字符串添加新字符串(),如下所示- String y= "Mary"; String x= new String("Mary"); System.out.print
String y= "Mary";
String x= "Mary";
System.out.print(x==y);
这将是真的,我不明白为什么 因为这两个字符串具有相同的引用标识,这是因为它们来自池。如果要向其中一个字符串添加新字符串()
,如下所示-
String y= "Mary";
String x= new String("Mary");
System.out.print(x==y);
你会得到
false
,因为y
和x
都指向字符串常量池中的同一个对象。这是编译器和JVM的一个实现细节。“这是编译器和JVM的一个实现细节”-实际上,这是Java规范所要求的。这不仅仅是一个实现细节。更详细一点的字符串池,这就是为什么您应该始终使用。Equals为什么否决?。这个答案怎么了?