掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
java,public class MyClass {, public static int myStaticVar = 10;,},MyClass.myStaticVar = 20; // 直接賦值,“在Java中,靜態(tài)成員變量是屬于類的,而不是屬于類的實例,這意味著我們可以在不創(chuàng)建類的實例的情況下訪問和修改靜態(tài)成員變量,要給靜態(tài)成員變量賦值,我們需要使用類名直接訪問它,以下是一些常見的賦值方法:

成都創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計團隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都1000+中小型企業(yè)策劃設(shè)計了網(wǎng)站。
1、在聲明時初始化靜態(tài)成員變量
在類的聲明中,我們可以直接為靜態(tài)成員變量賦值,這種方法稱為初始化。
public class MyClass {
public static int myInt = 10;
}
2、通過構(gòu)造函數(shù)初始化靜態(tài)成員變量
我們還可以在類的構(gòu)造函數(shù)中為靜態(tài)成員變量賦值,當(dāng)創(chuàng)建類的實例時,構(gòu)造函數(shù)會自動執(zhí)行。
public class MyClass {
public static int myInt;
public MyClass() {
myInt = 10;
}
}
3、通過靜態(tài)代碼塊初始化靜態(tài)成員變量
靜態(tài)代碼塊是在類加載時執(zhí)行的一段代碼,我們可以在其中為靜態(tài)成員變量賦值。
public class MyClass {
public static int myInt;
static {
myInt = 10;
}
}
4、通過靜態(tài)方法初始化靜態(tài)成員變量
我們還可以在靜態(tài)方法中為靜態(tài)成員變量賦值,當(dāng)調(diào)用這個靜態(tài)方法時,靜態(tài)成員變量會被賦予相應(yīng)的值。
public class MyClass {
public static int myInt;
public static void setMyInt(int value) {
myInt = value;
}
}
1、為什么不能直接訪問非靜態(tài)成員變量?
答:因為非靜態(tài)成員變量是屬于類的實例的,而在Java中,每個實例都有自己獨立的內(nèi)存空間,當(dāng)我們訪問一個實例的非靜態(tài)成員變量時,實際上是在操作該實例的內(nèi)存空間,如果我們直接訪問非靜態(tài)成員變量,就相當(dāng)于在其他實例的內(nèi)存空間中操作數(shù)據(jù),這是不允許的,而靜態(tài)成員變量是屬于類的,它們共享同一個內(nèi)存空間,所以我們可以直接訪問和修改它們。
2、為什么需要靜態(tài)方法來初始化靜態(tài)成員變量?
答:雖然我們可以直接在構(gòu)造函數(shù)或靜態(tài)代碼塊中為靜態(tài)成員變量賦值,但這樣做有一個缺點,那就是這些賦值操作必須在類加載時執(zhí)行,有時候我們希望在程序運行過程中動態(tài)地修改靜態(tài)成員變量的值,這時候就需要用到靜態(tài)方法了,通過定義一個靜態(tài)方法,我們可以在程序運行過程中調(diào)用這個方法來修改靜態(tài)成員變量的值,而不需要在類加載時就完成賦值操作。
網(wǎng)頁標(biāo)題:java靜態(tài)成員變量賦值的方法是什么
轉(zhuǎn)載注明:http://uogjgqi.cn/article/djoscic.html

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流