String字符串的存储原理

img


这里的运行结果为什么是true呢?"XYZ"对象和x对象有什么区别呢?

点是运算符,会把基本值转化为对象

说说equals吧,字符串的equals被重写了,会先比较内容是否一样,再比较地址。

很明显,"XYz"对象和x对象的内容一样

两个字符串的地址不同,但String的equals方法重写过,会比较值所以走第二个if返回true。

img


Object的equals是这样的

img

Object中默认的equals确实是比较两个对象的地址值。
String类的父类是Object类,String重写了Object的equals方法,使得String可以比较字符串。
你用"XYZ"==x输出的就是false了,因为==比较的是地址值。

String的equals比较的是内容。他们两个写的都是XYZ,都一样,就返回true