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

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

java中對象a = 對象b,這是一個什么樣的過程

java中對象a = 對象b,這是一個什么樣的過程

慕森王 2019-02-20 11:33:32
A a = new A(); a.s = 11; B b = new B(); b.s = 22; a = b;//這段代碼的過程 System.out.println(a.s); 類A和類B都有一個成員變量s,實例化出來的兩個對象 a,b。a = b; 這是一個什么樣的過程?如果調用a.s 會是哪個類的s變量?
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

如果按題目所說,那么a = b這里就會報類型轉換的錯誤。

如果是這樣的題目

A a = new A();
a.s = 11;
A b = new A();
b.s = 22;
a = b;//這段代碼的過程
System.out.println(a.s);

那么參考以下:

new A(); 在內存中開辟一塊內存空間mem-A,用來存放對象的數據
A a = new A(); 內存中有一個a變量,這個變量的值是mem-A的內存地址,換言之,a是一個指針,指向mem-A
同理, B b = new B();參考上面。

此時,a 指向 mem-A, b指向 mem-B
a = b;, 把a這個變量的值修改為b的值,即a變量現在存的是mem-B的內存地址,換言之,a這個指針現在已經不指向mem-A了,而是和b一樣,指向了mem-B。

所以調用a.s,實際上等同于調用b.s。

BTW,mem-A現在沒有任何變量指向它,因此它會被當做辣雞,從而被虛擬機回收

查看完整回答
反對 回復 2019-03-01
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

a和b都是引用。
把引用賦值給不同類型的引用會報類型轉換錯誤。
把引用賦值給相同類型的引用,兩個對象就指向同一片內存區域了。

對了。新手上路,僅供參考。

查看完整回答
反對 回復 2019-03-01
  • 3 回答
  • 0 關注
  • 861 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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