这个问题值得详细的解释一下 String s = “a”+“b”+”c”+”d”; 新手潜意识看见有4个字符串会感觉创建了4个对象,其实“a”+“b”+”c”+”d”运算时会先将字符串拼接之后再放到常量池中,也就是说系统先把“a”+“b”+”c”+”d“拼接成”abcd“之后才在常量池中创建一个对象把”abcd“放进去而不是先一个个的在常量池中创建对象之后再计算,所以常量池中有一个对象存放"abcd" s=="abcd"当然是true了。
下面这个情况: String s1="a";
String s2="b";
String s3=s1+s2;;
这种情况跟上面的恰恰想反,这种就是创建了2个对象,里面分别存放字符串"a"和字符串"b",然后2个对象相加,地址进行了运算。 |