初始印象:很多人都认为==是比较地址,equals是比较内容,这样是有点不准确的:
在Object中,equals里面实际就是用做比较的
再看String中的equals方法,先是比较了地址,如果相等就返回true,如果不相等就再比较内容,如果内容相等还是返回true;
原因:基本数据类型是直接存储在栈空间;引用数据类型是分开存,栈存地址,堆存值;
用 == 做比较的时候,其实比较的是栈空间里面的东西,所以基本数据类型用 == 是可以的。
但是引用数据类型使用做比较的时候,比较的是栈空间的地址,因为地址不同就会返回false;如上面的两个String,所以引用数据类型要使用equals进行比较;
另有小知识:
//StringBuilder拼接字符串
StringBuilder str1 = new StringBuilder();
str1.append(word1);
//String拼接字符串可以使用concat
String str1 = "";
str1 = str1.concat(word1);