==的注意点
/*
* == 运算符
* 1. 可以使用在基本数据类型变量和引用数据类型变量中
* 2. 如果比较的是基本数据类型变量 ,可直接比较两个变量是否相等(不用管是否相同变量)
* 如果比较的是引用数据类型变量 , 比较两个数据的地址是否相等 , 即两个变量是否指向同一个变量实体
* 如下例所示
*
*/
public class TestEquals {
public void main(String[] args[]){
person s = new person();
person s1 = new person();
}
}
class person{
}
equals()方法的注意点
/*
*equals()方法的注意
* 1. 是一个方法 而不是运算符
* 2. 只能用于引用数据类型
* 3. Object类中定义的equals() 和 == 的作用是相同的,比较两个对象的地址是否相同
* 4. 像 String、Date、File、包装类等都重写了equals()方法,不是比较两个引用对象的地址是否相等
* 而是比较两个对象的内容是否相等
* 5. 通常情况下,我们如果想要比较对象的内容是否相等的话
* 也要对equals() 进行重写如下例所示
*/
class Test{
private int i ;
private int j ;
Test(){
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
@Override
public boolean equals(Object obj) {
if(this == obj)
return true;
if(obj instanceof Test){
Test temp = (Test)obj;
if(this.i == temp.i && this.j == temp.j){
return true;
}else{
return false;
}
}else{
return false;
}
}
}
public class TestEquals {
public static void main(String[] args){
Test s = new Test();
Test s1 = new Test();
s.setI(1);
s.setJ(2);
s1.setI(1);
s1.setJ(1);
System.out.println(s.equals(s1));
}
}