<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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 主站蜘蛛池模板: 国产黄色免费观看| 亚洲AV电影天堂男人的天堂| 成人网站免费大全日韩国产| 国产精品亚洲精品日韩已方| 特级毛片全部免费播放| 国产男女猛烈无遮档免费视频网站 | 亚洲白色白色在线播放| 91手机看片国产永久免费| 亚洲美女免费视频| 无码国产精品一区二区免费 | 亚洲www在线观看| 卡1卡2卡3卡4卡5免费视频| 无码亚洲成a人在线观看| 国产精品二区三区免费播放心| 亚洲国产成人精品无码区二本 | 无码人妻一区二区三区免费手机 | 福利免费在线观看| 亚洲激情中文字幕| 无人在线观看免费高清视频 | 亚洲电影一区二区| av大片在线无码免费| 亚洲精品无码久久久久秋霞 | 春意影院午夜爽爽爽免费| 亚洲色欲久久久综合网| 另类免费视频一区二区在线观看 | 成全视频免费观看在线看| 亚洲美女视频一区二区三区| 精品久久久久久久久免费影院| 亚洲AV噜噜一区二区三区| 浮力影院亚洲国产第一页| 精品熟女少妇av免费久久| 亚洲人成网站999久久久综合| 亚洲精品偷拍视频免费观看 | a毛片基地免费全部视频| 国产成人亚洲精品蜜芽影院| 国产亚洲老熟女视频| 免费黄色网址网站| 成人免费网站久久久| 亚洲网址在线观看| 国产又大又粗又硬又长免费| 日本视频在线观看永久免费|