String str1 = "string"; String str4 = "string"; String str2 = new String("string"); String str3 = new String("string"); /*用于测试两种创建字符串方式的区别*/ System.out.println(str1 == str4); System.out.println(str2 == str3); System.out.println(str3 == str1); str3 = str3.intern(); //一个不常见的方法 System.out.println(str3 == str1);
这个的运行结果是
true //解释:两个字符串的内容完全相同,因而指向常量池中的同一个区域
false //解释:每一次new都会创建一个新的对象
false // 解释: 注意==比较的是地址,不仅仅是内容
true //介绍一下intern方法,这个方法会返回一个字符串在常量池中的一个地址,如果常量池中有与str3内容相同的string则返回那个地址,如果没有,则在常量池中创建一个string后再返回。实际上,str3现在指向了str1的地址。