首先看一段程序:
abdc四个字符串的hashcode都相等:是因为String重写了object的hashcode方法:
由重写的方法可知,String的hashcode只和value值相关,和内存地址无关。
当比较abdc四个字符串的地址时:
- 第一个true,是因为a和b是指向同一个变量,这个变量在变量池中。
- 第二个false,是因为b指向变量池中的一个变量,而c指向堆栈中变量,所以地址不同。
- 第三个false,通过c和d是分别指向堆栈中两个不同的对象,所以地址不同。
- 第四个false,原理同第二个false。