您的位置:首页 > 其它

“==”和equals()方法到底有什么区别

2016-11-29 13:03 330 查看
两个对象是否相等的含义

“==”和equals()都属于对象的关系运算中的比较相等。那么判断一个类的两个对象是否相等有什么含义呢?

有两层含义:

①判断它们是否引用同一个实例;

②当两个对象分别引用同一个实例时,判断它们的实例值是否相等。一般情况下,两个实例值相等,是指它们的各成员变量值分别对应相等。

图解

类(引用数据类型)使用==、!=运算符比较两个对象是否引用同一个实例。一个类的equals方法用于比较该类的两个对象是否相等,包括引用同一个实例和分别引用两个实例两种情况,==关系运算和equals()方法的含义如下:



(a) i和j都是基本数据类型变量,i==j比较两变量值是否相等,不比较地址;

(b) 将d1对象赋值给d2对象,两个对象引用同一个实例,d1==d2 ? true,d1.equals(d2)返回true;

(c) d2引用由d1拷贝构造的实例,d1==d2 ? false,d1.equals(d2)返回true;

记住,字符串的比较基本上都是使用equals方法。

如果一个类梅雨自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法发实现代码如下:

boolean equals(Object o){
return this==o;
}


这说明,如果一个类没有自己定义equals方法,它默认从Object类继承的equals方法就是使用==操作符,也是在比较两个变量指向的对象是否是同一个对象,这时候使用equals和==是同样的结果,如果比较的是两个独立的对象则总返回false。

另外,对象运算符instanceof判断一个对象所引用的实例是否属于指定类,运算结果为boolean型。例如:

Person p=new Person();
d instanceof Person     //结果是true,p是Person类的实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: