有幾個問題想問問大家1、凡是聲明在方法、構造方法、代碼塊外的變量或者常量都叫做字段,對嗎?2、靜態字段和實例字段有什么區別?3、實例變量也叫成員變量,靜態變量也叫類變量,對嗎?4、實例變量在jvm運行時會被放在主存中,然后工作線程拷貝一份副本過去,對嗎?5、因為4,所以就會產生線程是否安全的問題,對嗎?6、是不是所有類的實例變量都會被放在主存中呢,如果對實例變量聲明private,那么能防止別的線程使用這個實例變量嗎?還會產生線程安全嗎?7、單實例多線程并發訪問,就像servlet的訪問一樣,多線程是不是都要等待這個實例被其他線程使用完才能使用呢?如果時間不足,可以隨意提示一點tip給我,哪怕只是只言片語,先謝謝大家的不吝賜教!
2 回答

冉冉說
TA貢獻1877條經驗 獲得超1個贊
字段是什么?從學JAVA開始就沒聽說過叫字段的說法。。。。。
你要么叫變量,要么叫屬性,我暫且理解你說的字段就是變量,靜態變量和實例變量,
語法區別:靜態變量需要static關鍵字修飾,實例變量不需要。
程序運行時的區別:靜態變量從屬于類,實例變量從屬于對象。
實例變量必須創建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量;
靜態變量即類別量,只要程序加載了類的字節碼,靜態變量就會被分配空間,即可使用。
綜上,實例變量必須創建對象后通過這個對象來使用,靜態變量可以直接使用類名來引用
你先搞清楚實例變量的聲明周期自然就知道了jvm的原理跟線程問題
多線程不需要等待實例用完,多線程跟實例用不用完沒什么關系
new幾個對象就會在內存中分配幾個空間,堆和棧的關系你去搞清楚
添加回答
舉報
0/150
提交
取消