再说这个方法之前,我们来看一段代码。
String s1 = "HelloWorld";
String s2 = new String("HelloWorld");
System.out.println(s1 == s2);
打印的结果是false,因为”==“比较的是引用地址,很显然是s1引用地址指向是字符串常量池,s2的引用地址指向的是堆内存空间中,所以为false。
String s1 = "HelloWorld";
String s2 = new String("HelloWorld");
System.out.println(s1 == s2.intern());
我们给s2调用一个intern方法,运行结果是true,原来intern这个方法是把s2堆空间的字符串移到字符串常量池中,所以s1和s2引用地址都指向字符串常量池,所以打印出来为true.