1. 练习String类时发现的问题:
String str1 = "abc";
String str2 = "a";
String str3 = "bc";
String str4 = str2 + str3;
String str5 = "abc";
System.out.println(str5 == str1);// true
System.out.println(str4 == str1);// false
System.out.println(str4 == str5); //false
System.out.println(Integer.toHexString(str1.hashCode()));// 17862
System.out.println(Integer.toHexString(str4.hashCode()));// 17862
System.out.println(Integer.toHexString(str5.hashCode()));// 17862
以上代码中:
(1)str1、str4、str5的hashCode值完全一样;
(2)用 == 比较时,str1和str5的结果为true,str4与str1为false,str4与str5也为false;
(3)== 比较的是地址值;
(4)看一看hasCode()的源码: