2 limitvic limitvic 于 2014.03.11 21:08 提问

在面试题上看到的,不能理解这个答案,希望大神指导一下!

String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");
第一条语句打印的结果为 false,第二条语句打印的结果为 true

这是为什么呢?

2个回答

xiangnan129
xiangnan129   Rxr 2014.03.11 22:16

因为s2与s1+“b”所对应的地址引用不同,“a”+“b”编译器会自动优化成ab,在常量池中,都是从常量池中取,所以对象地址引用值一样。

oyljerry
oyljerry   Ds   Rxr 2015.01.11 15:42

string比较的是引用地址,第一个情况显然不相同
第二个做了优化,取的同一个

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!