==的注意點
/*
* == 運算符
* 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));
}
}