考慮使用Java下面的代碼片段:對象和引用計數| Java的
Customer obj1 = new Customer();
Customer obj2 = new Customer();
Customer obj3 = obj2;
obj3 = obj1;
在這裏創建的參考變量和對象有多少?我遇到的解決方案都令人困惑。請解釋。
考慮使用Java下面的代碼片段:對象和引用計數| Java的
Customer obj1 = new Customer();
Customer obj2 = new Customer();
Customer obj3 = obj2;
obj3 = obj1;
在這裏創建的參考變量和對象有多少?我遇到的解決方案都令人困惑。請解釋。
Customer Obj1= new Customer();
//客戶對象在堆上創建和OBJ1指它
Customer Obj2= new Customer();
//客戶對象在堆上創建和OBJ2指它
Customer Obj3= Obj2;
// OBJ3將參考obj2創建的客戶對象
Obj3= Obj1;
// OBJ3(previosly指的CUST OBJ通過OBJ2將丟失craeted),現在將參考由OBJ OBJ1
創建CUST因此我要說2對象和3個參考變量
假設custObj2
與new
, 和從上述代碼段進行初始化,其3個對象(包括custObj2
)和四個參考文獻(包括Obj3
)
有三個變量和創建的兩個對象。
雖然JLS不禁止它,但AFAIK沒有JVM使用引用計數,它太不可靠了。注意:C++智能指針使用引用計數,但這些效率非常低。
最多有三個對兩個不同對象的引用。
注意:除非您的代碼對他們有用,JVM可以將此代碼優化爲無,在這種情況下,您將沒有引用或對象。
創建2個對象(前2行)。
有在3個參考變量(OBJ1,OBJ2,和OBJ3都參考變量。)
最後2行簡單地分配引用2個不同的對象來OBJ3。
Obj3= Obj1;
後都會有兩個對象和3個引用。 Obj1和Obj3將引用同一個對象。
步驟反覆...
Customer Obj1= new Customer();
一個新的對象創建的,由OBJ1引用
Customer Obj2= new Customer();
通過OBJ2
Customer Obj3= custObj2;
OBJ3,參考變量,引用創建的第二個目的,是指custObj2
(其沒有按」 t存在於這組數據中,我們假設它是早期創建的?)
Obj3= Obj1;
Obj3被重新分配指向Obj1。
最後你有三個引用,Obj1,Obj2和Obj3以及2個對象(前兩個語句),最後是一個含糊的custObj2
...如果你打算輸入Obj2,那麼忽略該部分:)
你遇到了什麼解決方案?而你感到困惑的是什麼?那裏有什麼'custObj2'? –
@millimoose是的,從這個角度解釋它可能會讓他/她感到困惑。 – BlackVegetable
這是一個小小的謎題。有多少專業程序員需要編寫'2'?答案如下:) – toniedzwiedz