国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java ==與equals()的區別

2019-11-17 04:10:26
字體:
來源:轉載
供稿:網友

我們來介紹一下 ==和equals()的區別,==是相等,equals()也是相等。這兩個詞的區別是什么呢?這是找工作時很多面試官的問題。我們來解答一下。首先我們看這么個例子。實踐:
public class TestEquals {
public static void main(String[] args) {
MyDate date1 = new MyDate(14, 3, 1976);
MyDate date2 = new MyDate(14, 3, 1976);

if ( date1 = = date2 ) {
System.out.} else {
System.out.println("date1 is not identical to date2");
}

if ( date1.equals(date2) ) {
System.out.println("date1 is equal to date2");
} else {
System.out.println("date1 is not equal to date2");
}

System.out.println("設 date2 = date1;");
date2 = date1;

if ( date1 == date2 ) {
System.out.println("date1 is identical to date2");
} else {
System.out.println("date1 is not identical to date2");
}

}

}
這個例子中的MyDate類代碼如下
public class MyDate {
private int day;
private int month;
private int year;

public MyDate(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
public boolean equals(Object o) {
boolean result = false;
if ( (o != null) && (o instanceof MyDate) ) {
MyDate d = (MyDate) o;
if ( (day == d.day) && (month == d.month)
&& (year == d.year) ) {
result = true;
}

}
return result;
}
public int hashCode() {
return (day ^ month ^ year);
}

}

 

將這兩個類放置到同一個文件夾中,只需要編譯TestEquals類,就可以將MyDate一同編譯了。然后執行java TestEquals查看結果。如圖28-1所示
圖28-1
也就是說date1 = = date2 雖然都是new MyDate(14, 3, 1976);但是new了兩次就是兩個對象了,不能==了。==是指引用是否相同。
那么用equals()呢,equals()是Object里的方法,任何對象都繼承Object。所以equals()方法也適用于所有的類。為什么這回date1和date2就equals了呢?equals()是指值是否相等。因為都是(14,3,1976)所以相等。
我們把date1賦值給date2,結果當然是==了,都已經把引用賦給它了。還能不==嗎?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永丰县| 永善县| 疏附县| 九龙坡区| 理塘县| 阳朔县| 新邵县| 泰来县| 涟源市| 手游| 什邡市| 卢龙县| 五原县| 灌云县| 德惠市| 开鲁县| 江源县| 玉树县| 阿拉尔市| 华亭县| 佛冈县| 建瓯市| 黎城县| 韩城市| 宁阳县| 合作市| 遂川县| 安康市| 徐水县| 临泉县| 甘孜县| 比如县| 改则县| 永嘉县| 鄢陵县| 霍山县| 绥宁县| 长顺县| 满洲里市| 卓尼县| 南平市|