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

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

Java中的引用類型是按引用還是按值分配?

Java中的引用類型是按引用還是按值分配?

幕布斯6054654 2023-08-16 09:58:15
據(jù)我所知,在Java中引用類型是按值分配的,但我無法理解為什么下面的代碼會執(zhí)行它的操作。考慮以下代碼:Integer num = new Integer(11);List<Integer> arr = new ArrayList<>();arr.add(num);List arr2 = arr;arr = null;System.out.println(arr2);我們創(chuàng)建一個包含一個元素的 ArrayList,然后創(chuàng)建第二個列表并將其分配給第一個列表。據(jù)我了解,第二個列表僅指向與第一個列表相同的內(nèi)存位置,因此我對第一個列表所做的任何更改都將應(yīng)用于第二個列表。如果我將第一個列表設(shè)置為空,那么第二個列表也應(yīng)該變?yōu)榭?。為什么控制臺仍然記錄 11 而不是 null?
查看完整描述

2 回答

?
喵喵時光機

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

這就是后臺發(fā)生的事情。我會嘗試將其形象化,以便于理解。


創(chuàng)建整數(shù)對象:


Integer num = new Integer(11);

num --> @num493857 (some reference not real of course)

@num493857 --> ------

               | 11 |

               ------

創(chuàng)建數(shù)組列表:


List<Integer> arr = new ArrayList<>();

arr --> @arr7686

@arr7686 --> [] (empty list)

將 num 添加到 Arraylist:


arr.add(num);

arr --> @arr7686 --> [@num493857] // @num493857 has 11 in it

                         ^

                         |

                        num

設(shè)置 arr2 = arr:


List arr2 = arr;

arr --> @arr7686 --> [@num493857]

           ^             ^

           |             |

          arr2          num

設(shè)置 arr = null:


arr = null

arr --> null

        @arr7686 --> [@num493857]

           ^             ^

           |             |

          arr2          num

打印arr2:


System.out.println(arr2);

This prints whatever is in the list that is 11.


查看完整回答
反對 回復(fù) 2023-08-16
?
LEATH

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

如果您將 Java 變量與C 中的引用而不是指針進行比較,就會更容易理解。



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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