第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Java - 當(dāng)聲明全局變量并用值初始化時,對象創(chuàng)建時會發(fā)生什么?

Java - 當(dāng)聲明全局變量并用值初始化時,對象創(chuàng)建時會發(fā)生什么?

瀟湘沐 2023-10-13 15:13:40
當(dāng)全局變量被聲明并用值初始化時,在創(chuàng)建類的對象時,全局變量是否再次被初始化并獲得新的內(nèi)存?class A{int a = 10;}a這將被存儲在帶有 value 的內(nèi)存地址中10。但是當(dāng)我創(chuàng)建A類的對象時,a會再次初始化嗎?class A{int a = 10;public static void main(String args[]){A a = new A();}
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經(jīng)驗 獲得超4個贊

你所說的并不完全是內(nèi)存分配的工作原理。


class A{


int a = 10;


}

在上面的示例中,您創(chuàng)建了一個類。類中的成員僅在創(chuàng)建其對象后才創(chuàng)建并分配其值,除非將成員聲明為靜態(tài)。因此,在您發(fā)布的第二個示例中,在構(gòu)造 A 類的對象“a”之后,變量“a”被賦予值 10。如果你還是不明白,那么運行這段代碼:


class A{

int a = 10;

public static void main(String args[]){

A a = new A();

A b = new A();

b.a += 10;

System.out.println(a.a);

System.out.println(b.a);

}

}

如果變量 a 在創(chuàng)建對象之前被賦值,那么當(dāng)對象 b 修改它時,打印的變量就會改變。但如果你運行這個,輸出將是:


10

20

這意味著變量僅在對象創(chuàng)建后才分配。我希望這能消除您的疑慮。還有另一個提示,靜態(tài)變量不能修改。


查看完整回答
反對 回復(fù) 2023-10-13
?
莫回?zé)o

TA貢獻1865條經(jīng)驗 獲得超7個贊

當(dāng)全局變量被聲明并用值初始化時......

您所顯示的不是全局變量。Java 中不存在真正的全局變量。a是 的實例字段A。

這將被存儲在內(nèi)存地址 a 中,值為 10。

a不是內(nèi)存地址,它只是字段的名稱。您很少需要處理低級內(nèi)容,例如 Java 中的內(nèi)存地址。

但是當(dāng)我創(chuàng)建A類的對象時,a會再次初始化嗎?

在創(chuàng)建實例之前,不會為該字段分配內(nèi)存a,除非用于存儲已編譯的類文件本身。一旦創(chuàng)建了一個實例,A內(nèi)存中就會有一個位置存儲與該實例的字段10相對應(yīng)的值。a

請注意,如果您創(chuàng)建 的第二個實例A,則將分配另一塊內(nèi)存來保存a該實例的 。


查看完整回答
反對 回復(fù) 2023-10-13
?
慕哥6287543

TA貢獻1831條經(jīng)驗 獲得超10個贊

Java中沒有全局變量。有類變量和對象變量。類變量由關(guān)鍵字定義static。

在您的代碼中,該a變量是一個對象變量,每次創(chuàng)建該類的新對象時都會創(chuàng)建(并初始化)該變量,在本例中是通過調(diào)用new A().

如果您創(chuàng)建了 A 類的另一個對象,a則會為其創(chuàng)建(并初始化)另一個對象變量,這與第一個對象變量不同。


查看完整回答
反對 回復(fù) 2023-10-13
  • 3 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號