Java中“==”和equals的区别
- “==”可以适用于基本数据类型和应用数据类型,equals()只能适用于引用数据类型
- 对于引用数据类型
-
“==”比较两个引用类型的地址值是否相同 -
equals()不重写的话,比较的也是两个引用类型的地址值是否相同;equals()重写的话,比较的也是两个引用类型的内容是否相同
-
public class test{
public static void main(String[] args) {
MyData mydata1 = new MyData(12, 5, 1984);
MyData mydata2 = new MyData(12, 5, 1984);
// == 和 equals() 的测试
if (mydata1 == mydata2) {
System.out.println("mydata1 == mydata2");
}else {
System.out.println("madata1 != mydata2");
}
if (mydata1.equals(mydata2)) {
System.out.println("mydata1 equals mydata2");
} else {
System.out.println("mydata1 no equals mydata2");
}
}
}
class MyData{
private int day;
private int month;
private int year;
public MyData(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
//重写equals()方法
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj instanceof MyData) {
MyData mydata = (MyData) obj;
return this.day == mydata.day && this.month==mydata.month && this.year == mydata.year;
}
return false;
}
}
}
上述代码执行结果:
madata1 != mydata2
mydata1 equals mydata2

被折叠的 条评论
为什么被折叠?



