Java靜態(tài)變量與類變量與實(shí)例變量的區(qū)別

Java靜態(tài)變量與類變量與實(shí)例變量的區(qū)別

長沙一度軟件培訓(xùn)      2022-04-06 09:00:01     7

Java靜態(tài)變量與類變量與實(shí)例變量的區(qū)別,在Java中,靜態(tài)變量和實(shí)例變量可以統(tǒng)稱為成員變量。首先,明白什么是靜態(tài)變量,什么是實(shí)例變量,他們定義的形式。靜態(tài)變量也叫做

課程價(jià)格 請咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

在Java中,靜態(tài)變量和實(shí)例變量可以統(tǒng)稱為成員變量。首先,明白什么是靜態(tài)變量,什么是實(shí)例變量,他們定義的形式。靜態(tài)變量也叫做類變量,獨(dú)立于方法之外的變量,有static修飾。實(shí)例變量同樣獨(dú)立也是獨(dú)立于方法之外 的變量,但沒有static修飾。

舉個(gè)例子:

public?class?StaticTest?{????private?static?int?staticInt?=?2;//靜態(tài)變量????private?int?random?=?2;//實(shí)例變量?????public?StaticTest()?{????????staticInt++;????????random++;????????System.out.println("staticInt?=?"+staticInt+"??random?=?"+random);????}?????public?static?void?main(String[]?args)?{????????StaticTest?test?=?new?StaticTest();????????StaticTest?test2?=?new?StaticTest();????}}

看到上述代碼,大家可以想一下測試結(jié)果。

下面公布正確答案:

staticInt?=?3??random?=?3staticInt?=?4??random?=?3

是否和你想的一樣?上述例子很好的解釋了靜態(tài)變量和實(shí)例變量的區(qū)別。

下面來干貨了,注意收好。

區(qū)別總結(jié)如下:

實(shí)例變量屬于某個(gè)對象的屬性,必須創(chuàng)建了實(shí)例對象,其中的實(shí)例變量才會被分配空間,才能使用這個(gè)實(shí)例變量。結(jié)合上述給出的例子。每創(chuàng)建一個(gè)實(shí)例對象,就會分配一個(gè)random,實(shí)例對象之間的random是互不影響的,所以就可以解釋為什么輸出的兩個(gè)random值是相同的了。

靜態(tài)變量不屬于某個(gè)實(shí)例對象,而是屬于整個(gè)類。只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實(shí)例對象,靜態(tài)變量就回被分配空間,靜態(tài)變量就可以被使用了。結(jié)合上述給出的例子,無論創(chuàng)建多少個(gè)實(shí)例對象,永遠(yuǎn)都只分配一個(gè)staticInt 變量,并且每創(chuàng)建一個(gè)實(shí)例對象,staticInt就會加一。

總之,實(shí)例變量必須創(chuàng)建對象后,才可以通過這個(gè)對象來使用;靜態(tài)變量則可以直接使用類名來引用(如果實(shí)例對象存在,也可以通過實(shí)例對象來引用)。

其實(shí),這也可以解釋,為什么static修飾的方法不用在實(shí)例對象創(chuàng)建后,可以調(diào)用。而沒有static修飾的方法必須要與對象關(guān)聯(lián)在一起,必須創(chuàng)建一個(gè)對象后,才可以在該對象上進(jìn)行方法調(diào)用。

以上就是長沙一度軟件培訓(xùn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java靜態(tài)變量與類變量與實(shí)例變量的區(qū)別”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

培訓(xùn)啦提醒您:交易時(shí)請核實(shí)對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。