与Java中的逻辑运算符的字符串比较

Sun*_*eep 4 java string-comparison

比较两个字符串时,我被告知我们不应该使用逻辑运算符(==).我们应该使用String.equals(String)进行比较.但是,我看到以下代码符合并Hello Friend使用最新的JDK(1.6_23)打印" ".我试着四处寻找,找不到任何参考.从什么时候开始?

public class StringComp{
public static void main(String args[]){
        String s = "hello";
        if(s=="hello"){
                System.out.println("Hello Friend");
        }else{
                System.out.println("No Hello");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Nan*_*nne 11

你不应该使用,==因为它会做你想的其他事情.

在这种情况下,保存"你好"(读取字符串实习),因此它与你的搅拌一样"巧合".

==检查两件事情是否完全相同,而不是它们具有相同的内容.这是一个非常大的区别,一些偶然的(虽然可以解释)"虚假的可能性"并不是使用这种方法的理由.

只需使用equals进行字符串比较.

从这个站点的一个例子:http: //blog.enrii.com/2006/03/15/java-string-equality-common-mistake/

String a = new String ("a");
String b = new String ("a");
System.out.println (a == b);
Run Code Online (Sandbox Code Playgroud)

它返回false,而以下代码返回true.

String a = new String ("a");
String b = new String ("a");
System.out.println (a.equals(b));
Run Code Online (Sandbox Code Playgroud)