做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Java中==和equals的區別詳解

來源:懂視網 責編:小采 時間:2020-11-27 14:20:28
文檔

Java中==和equals的區別詳解

Java中==和equals的區別詳解:本篇文章給大家帶來的內容是關于Java中== 和equals的區別詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。在 Java 中 == 和 equals 的區別,感覺只有很少的人能才完全說正確。常見的錯誤回答就是:== 基礎類型對比的是值是否相同,引
推薦度:
導讀Java中==和equals的區別詳解:本篇文章給大家帶來的內容是關于Java中== 和equals的區別詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。在 Java 中 == 和 equals 的區別,感覺只有很少的人能才完全說正確。常見的錯誤回答就是:== 基礎類型對比的是值是否相同,引

本篇文章給大家帶來的內容是關于Java中== 和equals的區別詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

在 Java 中 == 和 equals 的區別,感覺只有很少的人能才完全說正確。

常見的錯誤回答就是:== 基礎類型對比的是值是否相同,引用類型對比的是引用是否相同;而 equals 則是比較的值是否相同。

至于為什么說它是錯的,看完本文對 == 和 equals 的解讀,你就知道了。

1、== 解讀

對于基本類型和引用類型 == 的作用效果是不同的,如下所示:

基本類型:比較的是值是否相同;引用類型:比較的是引用是否相同;

代碼示例:

String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

代碼解讀:因為 x 和 y 指向的是同一個引用,所以 == 也是 true,而 new String()方法則重寫開辟了內存空間,所以 == 結果為 false,而 equals 比較的一直是值,所以結果都為 true。

2、equals 解讀

equals 本質上就是 ==,只不過 String 和 Integer 等重寫了 equals 方法,把它變成了值比較。看下面的代碼就明白了。

首先來看默認情況下 equals 比較一個有相同值的對象,代碼如下:

class Cat {
 public Cat(String name) {
 this.name = name;
 }

 private String name;

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }
}

Cat c1 = new Cat("王磊");
Cat c2 = new Cat("王磊");
System.out.println(c1.equals(c2)); // false

輸出結果出乎我們的意料,竟然是 false?這是怎么回事,看了 equals 源碼就知道了,源碼如下:

public boolean equals(Object obj) {
 return (this == obj);
}

原來 equals 本質上就是 ==。

那問題來了,兩個相同值的 String 對象,為什么返回的是 true?代碼如下:

String s1 = new String("老王");
String s2 = new String("老王");
System.out.println(s1.equals(s2)); // true

同樣的,當我們進入 String 的 equals 方法,找到了答案,代碼如下:

public boolean equals(Object anObject) {
 if (this == anObject) {
 return true;
 }
 if (anObject instanceof String) {
 String anotherString = (String)anObject;
 int n = value.length;
 if (n == anotherString.value.length) {
 char v1[] = value;
 char v2[] = anotherString.value;
 int i = 0;
 while (n-- != 0) {
 if (v1[i] != v2[i])
 return false;
 i++;
 }
 return true;
 }
 }
 return false;
}

原來是 String 重寫了 Object 的 equals 方法,把引用比較改成了值比較。

3、總結

總體來說,== 對于基本類型來說是值比較,對于引用類型來說是比較的是引用;而 equals 默認情況下是引用比較,只是很多類重寫了 equals 方法,比如 String、Integer 等把它變成了值比較,所以一般情況下 equals 比較的是值是否相等。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Java中==和equals的區別詳解

Java中==和equals的區別詳解:本篇文章給大家帶來的內容是關于Java中== 和equals的區別詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。在 Java 中 == 和 equals 的區別,感覺只有很少的人能才完全說正確。常見的錯誤回答就是:== 基礎類型對比的是值是否相同,引
推薦度:
標簽: 面試 java eq
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top 主站蜘蛛池模板: 称多县| 澎湖县| 乌兰县| 昌都县| 松阳县| 中江县| 离岛区| 湾仔区| 长宁县| 仙桃市| 西青区| 胶州市| 和硕县| 邵阳县| 永州市| 榆树市| 云龙县| 扎鲁特旗| 闸北区| 吴堡县| 萨迦县| 讷河市| 江都市| 永康市| 吉林市| 云梦县| 云霄县| 维西| 定结县| 松原市| 阿克陶县| 论坛| 桂平市| 阿尔山市| 罗甸县| 安溪县| 北辰区| 瑞昌市| 班玛县| 章丘市| 东莞市|