equals是对值进行比较,最终是比较的基本类型,==则是你理解的那样,必须是同一个对象,指向同一个地址。这就是两者的区别。
String s1="hello";
String s2="hello";
这里比较会发现 s1 == s2 是因为编译器会在编译的时候发现两者相同,所以指向同一个对象以节省内存。如果s2是动态生成的(写成 String s2 = "h" + "ello"是会被编译器优化的成"hello"的)
就不会==
Object.equals()
博客介绍了equals和==的区别,equals比较值,最终比较基本类型,==要求是同一对象、指向同一地址。还提到编译器优化,如String类型变量,编译时若值相同会指向同一对象节省内存,动态生成的则不同。

被折叠的 条评论
为什么被折叠?



