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

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

關于引用類型的問題

關于引用類型的問題

為什么打印b不是等于[4,44]?而是[4],按照引用數據的邏輯,b和a指向的是同一個地址,a作改變b也應該作改變
查看完整描述

1 回答

已采納
?
千秋此意

TA貢獻158條經驗 獲得超188個贊

你要理解將一個引用類型的值(對象)賦值給變量時,該變量保存的值實際上只是一個指向內存中該對象的指針、一個地址,而不是該對象本身。
?
你只有通過變量a中保存的這個指針去操作內存中的對象并使其發生改變后,再通過b去訪問該對象時,才會出現 "我改變了a,所以b也跟著改變了" 這種錯覺,實際上在以上操作前提下,a和b都沒有發生過改變,改變的只是內存中的那個對象。

你這個demo的問題出在第12行,你在這里通過字面量的方式創建了一個新的引用類型的值,并將其引用賦值給了變量a,此時變量a中所保存的值也就變成了指向這個新的對象在內存中地址的指針了,而b還是指向第一個對象,所以你打印b就還是輸出 "[4]"

再然后在14行,你又將b所保存的值賦值給了a, 此時b和a再次指向一開始所創建的那個對象(即“[4]”),然后你在第15行通過"b.push"來操作了該對象,使對象的值發生了改變,因為此時a和b指向同一對象,所以在16行通過a去訪問該對象時自然打印出改變后的值,即 "[4,44]"


ps:如果以上回答能對你有所幫助萬望采納~

查看完整回答
1 反對 回復 2018-03-19
  • 1 回答
  • 0 關注
  • 1095 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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