例如,假設我們有一個如下的代碼片段:
Rectangle r1 = new Rectangle( 5 ) 。
Rectangle r2 = new Rectangle( 10 ) 。
Rectangle r3 = r1;
r1.length = 30;
r1 = r2。
r2 = r3。
r1 = r2。
當我們將r1設定為r2,r2設定為r3時,究竟發生了什么?發生在r2上的所有事情都會發生在r1上嗎,等等?
uj5u.com熱心網友回復:
Rectangle r1 = new Rectangle( 5 ) 。// A
Rectangle r2 = new Rectangle( 10 ) 。// B
Rectangle r3 = r1; // r3 = A
r1.length = 30; // Mutate A
r1 = r2; //r1 = B
r2 = r3; // r2 = A
r1 = r2; //r1 = A。
重新分配一個變數將只是改變該變數所指向的值。
最后我們可以看到所有的3個變數都將指向A,而B的參考將丟失。
uj5u.com熱心網友回復:
首先:
結束:(下面的矩形物件將被GC回收,因為沒有對它的參考)
你所做的是一個參考的改變,r1、r2被指向不同的物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321067.html
標籤:


