string s1="programming "; 字符串缓冲池(常量池)
string s2=new String("programming"); 堆内存
string s3="program ";
string s4="ming ";
string s5="program"+"ming "; 两个都是字符串常量,所以操作在字符串缓冲池中进行,两者拼接后找到s1;
string s6=s3+s4;
问:
s1==s2; false
s1==s5; true
s1==s6; false
s1==s6.intern(); true 加上“.intern()” 表示从常量池中取出一个具有相同值的“progrmming”
s2==s2.intern(); false
equals和== 的区别
== 比较的是是否为同一对象
equals 比较的是对象的内容是否相等
String a = new String("ab");
String b = new String("ab");
String aa= "ab";
String bb = "ab";
问:
aa=bb true
a==b false