"判断依据是地址值" 这个怎么理解啊?
假设s1引用的对象在堆中的地址是 0x0020
s2引用的对象在堆中的地址是 0x0030
比较 s1 == s2 因为堆栈地址不相同所以是false 这个是以地址为依据的可以理解
但是 s1.equals(s2) 这个怎么解释 啊?
我是这样理解的: 堆地址 0x0020 存的是 "hello" (地址储存的值)
堆地址 0x0030 存的也是 "hello"
String类中重写了方法equals,实际不是比较堆的内存地址,而是比较 地址内存的内容是否相同,也就是字符串是否相同。 |