本帖最后由 ying 于 2013-1-8 00:34 编辑
楼主的没有错!
String s1 = "你好";
String s2 = "我好";
String s3 ="你好我好";
System.out.println(s3==s1+s2); //false;
System.out.println(s3=="你好"+"我好"); //true;
我再此解释一下第二个输出语句为true的原因
首先你要搞清楚的是字符串用==比较,是比较两个字符串是不是指向同一个对象
在程序运行的时候会创建一个字符串缓冲池,程序会把字符串变量放入缓冲池中,
如程序中的 s1、s2、s3
当使用表达式创建对象时,程序首先会在缓冲区中寻找是否有相同值的对象 s3 先被放到池中
所以 "你好"+"我好" 被创建的时候,程序找到了具有相同值的 s3 ,将"你好"+"我好"引用 s3的对象
所以在比较 s3=="你好"+"我好",由于两者引用的同一个对象,所以为true
而上面楼主三的代码与提问的楼主的代码就不一样了!结果肯定不一样了! 仔细看看!
|