給物件引用變數賦值(轉)
給物件引用變數賦值(轉)[@more@]物件變數的賦值和你直覺期望的不同。例如,你認為下面的程式段是做什麼呢?
Box b1 = new Box();
Box b2 = b1;
你可能認為,變數b2被賦值為變數b1物件引用的一個複製。也就是,你可能認為b1和b2引用的是不同的物件,但實際情況卻相反,b1和b2將引用同樣的物件。將b1賦值給b2並沒有分配任何記憶體或對原物件做任何部分的複製。由於它們是同一個物件,因此透過變數b2對物件的改變也將影響b1所對應的物件。
儘管b1和b2都引用同一個物件,但是他們之間沒有任何其他的關係。例如,接下來對b1的賦值僅僅使b1脫離(unhook )初始物件,而沒有影響物件或影響b2。
Box b1 = new Box();
Box b2 = b1;
// ...
b1 = null;
這裡,b1被設定為空,但是b2仍然指向原來的物件。
注意:當你將一個物件引用賦值給另一個物件引用時,你並沒有建立該物件的一個複製,而是僅僅對引用的一個複製。
Box b1 = new Box();
Box b2 = b1;
你可能認為,變數b2被賦值為變數b1物件引用的一個複製。也就是,你可能認為b1和b2引用的是不同的物件,但實際情況卻相反,b1和b2將引用同樣的物件。將b1賦值給b2並沒有分配任何記憶體或對原物件做任何部分的複製。由於它們是同一個物件,因此透過變數b2對物件的改變也將影響b1所對應的物件。
儘管b1和b2都引用同一個物件,但是他們之間沒有任何其他的關係。例如,接下來對b1的賦值僅僅使b1脫離(unhook )初始物件,而沒有影響物件或影響b2。
Box b1 = new Box();
Box b2 = b1;
// ...
b1 = null;
這裡,b1被設定為空,但是b2仍然指向原來的物件。
注意:當你將一個物件引用賦值給另一個物件引用時,你並沒有建立該物件的一個複製,而是僅僅對引用的一個複製。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958066/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物件屬性值賦給變數物件變數
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- php變數賦值給jsPHP變數賦值JS
- java裡面給物件賦值,慎用賦值符號(=) (轉)Java物件賦值符號
- 把物件賦給int型變數物件變數
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- JAVA 物件引用,以及物件賦值Java物件賦值
- 列表切片賦值給另一個變數賦值變數
- python同時給多個變數賦值Python變數賦值
- 執行sql語句給外部變數賦值SQL變數賦值
- 把匿名函式賦值給變數,通過變數來呼叫函式賦值變數
- 把匿名函式賦值給變數,透過變數來呼叫函式賦值變數
- 物件賦值轉換物件賦值
- Java物件及物件引用變數Java物件變數
- web中,利用反射給物件賦值Web反射物件賦值
- matlab中怎麼給符號變數賦值Matlab符號變數賦值
- 數字索引賦值給多個變數簡單表示式索引賦值變數
- 變數的賦值 指標間接賦值變數賦值指標
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- 複製物件重新賦值不改變原物件物件賦值
- javascript變數賦值或者重新賦值注意事項JavaScript變數賦值
- 鎖賦值給其他變數為什麼會死鎖呢?賦值變數
- 微信小程式app.js給全域性變數globalData賦值微信小程式APPJS變數LDA賦值
- 變數的解構賦值變數賦值
- shell 變數賦值問題變數賦值
- shell變數命名與賦值變數賦值
- python 多變數賦值Python變數賦值
- 值物件與引用物件物件
- 從資料庫返回多條紀錄賦值給shell變數資料庫賦值變數
- Python 中變數賦值傳遞時的引用和複製介紹Python變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-對BOOLEAN變數賦值SQL變數賦值Boolean
- PLSQL Language Referenc-PL/SQL集合和記錄-集合變數賦值-給可變陣列和巢狀表賦NULL值SQL變數賦值陣列巢狀Null
- vue物件拷貝,解決由於引用賦值修改原物件的方法Vue物件賦值
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- 列表切片賦值給另一個變數,淺拷貝原理解析賦值變數
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- c#小灶——常量、變數和賦值C#變數賦值
- AC-DMIS 5.3 V變數賦值變數賦值