Java中如何判断两个对象是否相等呢?
下文笔者将讲述Java中判断对象是否相等的方法分享,如下所示:
我们都知道在Java中对基本数据类型相等判断的方法,我们可以使用“==”符号对其进行判断, 当相等时,则返回true,否则返回false
自定义equals方法
当一个对象的width相同时,我们认为他们相同
我们都知道在Java中对基本数据类型相等判断的方法,我们可以使用“==”符号对其进行判断, 当相等时,则返回true,否则返回false
在引用对象中,我们判断两个对象是否相等,则不能使用==符号进行判断
因为 == 符号是判断两个引用对象所指向的内存地址是否相同,相同则返回true,否则返回false
我们深知通常每一个引用对象都会在内存中开辟一块新的内存,所以我们使用“==”,肯定返回false,此时我们可以使用重写equals方法对对象进行判断
-------------------------------------------------
下面笔者将讲述重写equals方法,具体的步骤如下所示:
1.使用“==”判断是否相等
2.验证equals()方法的参数是否为null
当为null,则返回false
3.当参数不为null,则如果两个对象的运行时类(通过getClass()获取)不相等,返回false,否则继续判断。
4.自定义判断类成员是否相等
例:自定义equals方法
当一个对象的width相同时,我们认为他们相同
package com.java265.other;
public class test {
/*
* java265.com 对象是否相等的判断方法的示例分享
*/
public static void main(String[] args) {
A a1 = new A(11, 12);
A a2 = new A(11, 18);
A a3 = new A(12, 18);
System.out.println(a1.equals(a2)); // true
System.out.println(a1.equals(a3)); // false
System.out.println(a3.equals(a2)); // false
}
}
class A {
private int width;
private int height;
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj == this)
return true;
if (obj instanceof A) {
A tmp = (A) obj;
if (tmp.width == this.width)
return true;
}
return false;
}
public A(int width, int height) {
super();
this.width = width;
this.height = height;
}
public int getWidth() {
return this.width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return this.height;
}
public void setHeight(int height) {
this.height = height;
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


