JAVA ==和equals的区别

(1)Java 基本数据类型:boolean,byte,short,char,int,float,double,long;
使用==进行比较时,若值相同,则返回true;

(2)Java 复合数据类型,使用==进行比较时,比较两个对象的内存地址是否相同,若相同,返回true;
使用equals比较,若未重写equals方法,默认比较对象的内存地址是否相同(等同于==);
Object类的equals方法:

object.equals.png

(3)某些类重写了equals方法,比如String类

String.equals.png

因此,当String对象使用equals方法时,比较的是值是否相同,而非引用;

()另外,String类有字符串缓冲池的机制;
示例:

String==.png

此时打印出结果:true;
String a="hello";首先会在字符串缓冲池中寻找"hello"对象,若找到,则指向它;若未找到,则先在String pool中创建然后再指向它;因此a和b都指向字符串缓冲池中的同一个"hello"对象;

String.new.==.png

而此时打印结果:false;
原因;c指向了堆内存上的一个hello对象,而a指向字符串缓冲池上的hello对象;

Screenshot from 2015-07-27 09:23:10.png

此时打印结果:true;
intern()方法:返回一个引用,该引用指向字符串池中的一个与自己equals的对象;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容