字符串比较,求解释
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同上