标签:相等 不能 测试 div lse 一个 instance 原因 引用类型
==:符号两边数据类型必须兼容(一边数据类型能转成另一边数据类型)
1.比较基本数据类型:比较两个变量值是否相等
2.比较引用数据类型:比较是否指向同一数据对象
equals:只能比较引用类型
1.比较一般引用类型:作用与“==”相同,比较是否指向同一对象
2.比较特殊引用类型:File、String、Date和包装类,比较的是内容是否相同,而不考虑是否引用的同一对象
(原因:在这些类中,重写了Object类的equals方法)
重写Object类的equals()方法示例:
public class Student {
private String name;
private int age;
/**
* 构造器(构造函数)
* @param name
* @param age
*/
public Student(String name,int age) {
this.name=name;
this.age=age;
}
/**
* 重写equals()
* 1.判断传进来的对象是否为该类的一个实例,如是,就类型强制转换
* (原因:不判断,就不能使用该类成员变量)
* 2.用==和equal比较成员变量
*/
@Override
public boolean equals(Object obj) {
boolean flag=false;
if(obj instanceof Student) {
Student s=(Student)obj;
if(this.age==s.age && this.name.equals(s.name)) {
flag=true;
}
}
return flag;
}
}
测试:
public class Test {
/**
* 重写equals()测试
* @param args
*/
public static void main(String[] args) {
Student s1=new Student("学生1",11);
Student s2=new Student("学生1",11);
Student s3=new Student("学生2",11);
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
}
}
输出结果:
true
false
标签:相等 不能 测试 div lse 一个 instance 原因 引用类型
原文地址:https://www.cnblogs.com/youayou/p/11676503.html