读书人

字符串比较求解释解决方案

发布时间: 2012-05-24 11:55:41 作者: rapoo

字符串比较,求解释
String s1 = "Hello";
String s2 = "hello";
String s3 = s1.toLowerCase();
String s4 = s2.toLowerCase();

System.out.println(s2 == s3);
System.out.println(s3 == s4);
System.out.println(s2 == s4);


false
false
true


我想问,3次引用地址的比较,为什么是false,false,true?
为什么s2和s4的地址就是相同的,而2和3,3和4就不同?


[解决办法]
String s1 = "Hello";
String s2 = "hello";
String s3 = s1.toLowerCase();
String s4 = s2.toLowerCase();

System.out.println(s2 == s3);
System.out.println(s3 == s4);
System.out.println(s2 == s4);


false
false
true


我想问,3次引用地址的比较,为什么是false,false,true?
为什么s2和s4的地址就是相同的,而2和3,3和4就不同?

s2和s4地址相同,String s2 = "hello";String s4 = s2.toLowerCase();
查看jdk toLowerCase()方法,返回的是 return this; 所以是相同的
然而2和3 为什么不同,String s2 = "hello";
String s3 = s1.toLowerCase();
原因是s3是在运行期生成的新对象 return new String(0, count+resultOffset, result);
所以不同
而3和4同上

读书人网 >J2EE开发

热点推荐