亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java中的包裝類和通用說明

Java中的包裝類和通用說明

倚天杖 2022-05-21 20:15:30
在下面的代碼中,該行System.out.println(sumInteger(bigs) == sumInteger(bigs));顯示為 false。但是當我們再次比較另一個 Integer 包裝類System.out.println(bc == ab);時,它返回 true。為什么包裝類的比較在第一種情況下為假而在第二種情況下為真?import java.util.Arrays;import java.util.List;public class Arrays {    public void array1() {        List<Integer> bigs = Arrays.asList(100,200,300);        System.out.println(sumInteger(bigs) == sum(bigs)); // 1. Output: true        System.out.println(sumInteger(bigs) == sumInteger(bigs)); //2. Output: false        Integer ab = 10;        System.out.println(ab == 10); //3. Output: true        Integer bc = 10;        System.out.println(bc == ab); //4. Output: true    }    public static int sum (List<Integer> ints) {        int s = 0;        for (int n : ints) { s += n; }        return s;    }    public static Integer sumInteger(List<Integer> ints) {        Integer s = 0;        for (Integer n : ints) { s += n; }        return s;    }    public static void main(String[] args) {        Array tm = new Array();        tm.array1();    }}
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

  System.out.println(sumInteger(bigs) == sum(bigs)); // 1. ***Output: true
   System.out.println(sumInteger(bigs) == sumInteger(bigs)); //2. ***Output: false

sumInteger() 返回一個 Integer,而 sum() 返回一個 int,因此您正在測試 Integer 與 int 的相等性,這會導致 Integer 自動拆箱,因此您最終將 int 與 int 進行比較。兩個整數現在具有相同的值,因此為“真”。

sumInteger() 返回一個 Integer,再次調用 sumInteger() 返回一個 Integer。這兩個整數是單獨創建的對象,但都具有相同的內部值。當您使用“==”比較它們時,它會比較引用并查看每個對象是如何獨立創建的,引用不相等,因此為“假”。如果您想測試相等的值,您將需要使用 .equals() 方法。


查看完整回答
反對 回復 2022-05-21
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號