您的位置:首页 > 编程语言 > Java开发

关于==与equals()区别

2014-02-24 00:23 148 查看
想相信很多人学习Java的时候都会被这两个的区别弄的晕头转向,我一开始也是这样的,今晚看thinking in Java的时候突然对这个问题有了比较清晰地认识,特此跟大家分享一下:

首先要明确一个预备知识,也就是Java类的存储位置问题,当我们构建一个类的两个对象的时候,Java会在内存中开辟两个对象的空间,并且让两个对象名分别指向这两个类,而每个类的对象空间中都存着各自的变量值。

下面就是正题啦:

当我们创建两个Interger()【注意,Interger类是java类库的类,这个提示后面会提到作用】

Interger n1 = new Interger(47);

Interger n2= new Interger(47);

若用==比较n1 与 n2 这两个类 返回的是false,而用equals比较两个对象则返回true。为什么呢,因为==比较是引用,也就是所,比较n1,n2两个对象名指向的空间,当然是不一样的。而equals比较是是n1,n2的内容,当然是一样的。

可能有人看到这会说,很简单啊,==比较的是对象的引用,equals比较的时对象的具体内容。

但事情并不是这么简单地,其实equals方法比较的也是对象的引用,那为什么前面的Interger 两个对象可以比较出来呢。这个是因为,Interger类是Java类库的类,Java类库已经对大部分的类中得equals方法进行了重写,使其变成比较对象中得内容。

也就是说,如果你想比较自己写的类的内容是否一样,依然不能用equals。但是你可以在自己的类中重写equals方法,使其具备比较内容的作用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java equals方法