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

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于在本類定義中實例化本類對象的問題

代碼

package?com.antique;

public?class?Test?{

????private?String?s?=?"123";

????public?String?getS()?{
????????return?s;
????}

????public?static?void?main(String[]?args){

????????System.out.println(new?Test().getS());
????}

}

背景

在一個類中有實例化本類對象的行為,我的理解如下:Java程序分為編譯與運行兩部分,在編譯的時候使用javac,這個時候把`Test.java`編譯成`Test.class`,在執行到以上程序的`new Test()`時,JVM把該指令傳遞給CPU,CPU在堆空間才開辟一個具體的內存空間用來存放一個Test對象。

問題:存放在對空間中的Test對象,其中也有一個本身自己的實例化的代碼,該代碼會不會執行,造成類似于迭代效果的后果?

正在回答

2 回答

不會,堆中的test對象的默認值是個空值

0 回復 有任何疑惑可以回復我~
#1

Antique 提問者

默認是個空值?這個不能理解
2017-08-27 回復 有任何疑惑可以回復我~
#2

慕粉095609116 回復 Antique 提問者

建議你看一下類加載原理,我也是初學者,有不對的地方歡迎指正,類加載時,虛擬機會在堆中開辟一塊內存用于存放new Test()對象,這個對象的引用在棧中開辟,也可以看做是這個對象的地址值,本代碼中通過類調用方法把s的值賦給這個對象,相當于覆蓋了這個值
2017-08-30 回復 有任何疑惑可以回復我~

什么叫類似迭代效果的后果?

0 回復 有任何疑惑可以回復我~
#1

Antique 提問者

堆中的對象Test中又有一個構造函數,如此往復會不會一直構造下去
2017-08-27 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于在本類定義中實例化本類對象的問題

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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