第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用 varargs 時是否會創(chuàng)建一個新數(shù)組?

使用 varargs 時是否會創(chuàng)建一個新數(shù)組?

牧羊人nacy 2023-07-19 15:45:24
考慮下面的類:class Collection {    private Object[] terms;    public Collection(Object... terms) {        this.terms = terms;    }    // Do something with terms...}我試圖用這個類來保持不變性,并且我想更多地了解 varargs 及其功能。當(dāng)我使用參數(shù)時:Collection c = new Collection(1, 2, 3, 4);我假設(shè)在上面的實例中創(chuàng)建了一個新數(shù)組。但是,如果我要執(zhí)行類似以下代碼的操作:Object[] arr = {1, 2, 3, 4};Collection c = new Collection(arr);由于使用了可變參數(shù),在上述實例中是否隱式創(chuàng)建了一個新數(shù)組,或者該數(shù)組只是通過引用傳遞,就像類型參數(shù)用于Object[]?
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

我會說不,因為以下原因。使用原始數(shù)組。不會創(chuàng)建新的。


   public static void main(String[] args) {

      int[] v = { 1, 2, 3, 4

      };

      System.out.println(System.identityHashCode(v));

      test(v);

      System.out.println(Arrays.toString(v));

   }


   public static void test(int... vals) {

      System.out.println(System.identityHashCode(vals));

      vals[2] = 1000;

   }

打印出來


2085857771

2085857771

[1, 2, 1000, 4]


查看完整回答
反對 回復(fù) 2023-07-19
?
白豬掌柜的

TA貢獻1893條經(jīng)驗 獲得超10個贊

當(dāng)我解釋JLS時,如果您傳遞一個數(shù)組作為參數(shù),則不會創(chuàng)建新數(shù)組。WJS 的示例還表明,在這種情況下它保持相同的數(shù)組,因為在 vararg 函數(shù)中所做的更改在執(zhí)行后仍然可見。



查看完整回答
反對 回復(fù) 2023-07-19
  • 2 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號