3 回答

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果按題目所說,那么a = b
這里就會(huì)報(bào)類型轉(zhuǎn)換的錯(cuò)誤。
如果是這樣的題目
A a = new A();
a.s = 11;
A b = new A();
b.s = 22;
a = b;//這段代碼的過程
System.out.println(a.s);
那么參考以下:
new A();
在內(nèi)存中開辟一塊內(nèi)存空間mem-A,用來存放對(duì)象的數(shù)據(jù)A a = new A();
內(nèi)存中有一個(gè)a變量,這個(gè)變量的值是mem-A的內(nèi)存地址,換言之,a是一個(gè)指針,指向mem-A
同理, B b = new B()
;參考上面。
此時(shí),a 指向 mem-A, b指向 mem-Ba = b;
, 把a(bǔ)這個(gè)變量的值修改為b的值,即a變量現(xiàn)在存的是mem-B的內(nèi)存地址,換言之,a這個(gè)指針現(xiàn)在已經(jīng)不指向mem-A了,而是和b一樣,指向了mem-B。
所以調(diào)用a.s
,實(shí)際上等同于調(diào)用b.s
。
BTW,mem-A現(xiàn)在沒有任何變量指向它,因此它會(huì)被當(dāng)做辣雞,從而被虛擬機(jī)回收

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
a和b都是引用。
把引用賦值給不同類型的引用會(huì)報(bào)類型轉(zhuǎn)換錯(cuò)誤。
把引用賦值給相同類型的引用,兩個(gè)對(duì)象就指向同一片內(nèi)存區(qū)域了。
對(duì)了。新手上路,僅供參考。
添加回答
舉報(bào)