关于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