Java中关于String的比较

关于String的各种==和equals,有的人搞不懂

简而言之

String  s1 = "Hello"                     声明的是一个常量,会在常量池里。

String  s2 = new String("Hello"),声明的是一个对象,在内存里会有单独的空间。 

==比较的是String的地址

equals比较的是String的内容

public class TestString{
    public static void main(String[] args){
        String str1 = new String("Hello");
        String str2 = new String("Hello");
        String str3 = "Hello";
        String str4 = "Hello";
        System.out.println(str1.hashCode());
        System.out.println(str2.hashCode());
        System.out.println(str1.equals(str2));
        System.out.println(str1==str2);
        System.out.println(str1.equals(str3));
        System.out.println(str1==str3);    
        System.out.println(str3.equals(str4));
        System.out.println(str3==str4);    
    }
}

输出是:

69609650
69609650
true
false
true
false
true
true
原文地址:https://www.cnblogs.com/yueyanglou/p/5256162.html