国产探花免费观看_亚洲丰满少妇自慰呻吟_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,結果當然是==了,都已經把引用賦給它了。還能不==嗎?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀来县| 永定县| 平泉县| 甘南县| 崇义县| 明水县| 克山县| 如皋市| 从化市| 彭阳县| 静海县| 石渠县| 礼泉县| 盈江县| 彭州市| 沿河| 蒲城县| 襄樊市| 稷山县| 福州市| 雷波县| 花垣县| 门源| 汤阴县| 天水市| 白朗县| 太原市| 沭阳县| 两当县| 德令哈市| 崇州市| 广昌县| 天镇县| 和平县| 三亚市| 丰镇市| 武清区| 神木县| 大渡口区| 连山| 应用必备|