Java中“==和equals”的区别
Posted ExploreEverything
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中“==和equals”的区别相关的知识,希望对你有一定的参考价值。
String str = "example"; String str2 = "example"; String str3 = "example"; String str4 = new String("example"); (1)str == str4 -> false (2)str.equals(str4) -> true
String str = "example";内存会去查找永久代(常量池) 是否有“example”,如果没有的话,在永久代中开辟一块内存空间,把地址赋给栈指针,如果已经有了"example"的内存,直接把地址赋给栈指针;因此str==str2==str3会一直相等,因为它们指向同一块内存空间;
而String str4 = new String("example");是在堆中从新new一块儿内存,把指针赋给栈中的引用;
总结:(1)“==” 是判断地址的,当然不相同;
(2)至于equals,String类型重写了 equals()方法,判断内容是否相等,因此 equals 是相等的;
以上是关于Java中“==和equals”的区别的主要内容,如果未能解决你的问题,请参考以下文章