String s3 = "你好吗";
String s4 ="你";
String s5 ="好吗";
System.out.println(s3==("你"+"好吗"));//这个是true
System.out.println(s4+s5==s3);//这个是false
字符串是引用类型,==对于引用类型来说是比较地址,首先,字符串对象是常量,一旦初始化就不能被改变。
“你”+“好吗”计算后得到字符串“你好吗”,这个字符串在内存中已经有了,所以引用的是s3的地址,所以为true。而第二个两个变量相加java无法预知相加后和s3的值是否一样,所以要先开辟空间,再来存储计算后的结果。
|