码迷,mamicode.com
首页 > 编程语言 > 详细

Java中“==和equals”的区别

时间:2018-12-20 20:33:05      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:图片   opera   常量   引用   string   rate   equals   class   地址   

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一块儿内存,把指针赋给栈中的引用;

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

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

技术分享图片

Java中“==和equals”的区别

标签:图片   opera   常量   引用   string   rate   equals   class   地址   

原文地址:https://www.cnblogs.com/goodbye-lazy/p/10151548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!