Java中“==和equals”的区别

String str = "example"; String str2 = "example"; String str3 = "example"; String str4 = new String("example"); (1)str == str4 -> false2)str.equals(str4) -> true
String str = "example";内存会去查找永久代(常量池) 是否有“example”,若是没有的话,在永久代中开辟一块内存空间,把地址赋给栈指针,若是已经有了"example"的内存,直接把地址赋给栈指针;所以str==str2==str3会一直相等,由于它们指向同一块内存空间;
 

而String str4 = new String("example");是在堆中重新new一起内存,将栈中的引用指向这块内存;spa

总结:(1)“==” 是判断地址的,固然不相同;指针

(2)至于equals,String类型重写了 equals()方法,判断内容是否相等,所以 equals 是相等的;code

相关文章
相关标签/搜索