Java 中靜態變數和例項變數區別

2021-08-19 19:14:27 字數 953 閱讀 3617

在程式執行時的區別:

總之,例項變數必須建立物件後才可以通過這個物件來使用,靜態變數則可以直接使用類名來引用。

類的靜態資料成員值被所有物件共享,任何物件都可以訪問類的靜態資料成員。但是他們使用的是同乙個資料,操作的是同一塊記憶體,無論哪個物件修改了它,對其他物件來說,他已經變了

例如,對於下面的程式,無論建立多少個例項物件,永遠都只分配了乙個 staticint 變數,並且每建立乙個例項物件,這個 staticint 就會加 1;但是,每建立乙個例項物件,就會分配乙個 random,即可能分配多個 random ,並且每個 random 的值都只自加了1次。

public

class

statictest

public

static

void

main

(string

args

)}

執行以上程式,輸出結果為:

staticint =3

random =3

staticint =4

random

=3

成員變數

區域性變數

靜態變數

定義位置

在類中,

方法外方法中

,或者方法的形式引數

在類中,

方法外初始化值

有預設初始化值無,

先定義,

賦值後才能使用

有預設初始化值

呼叫方式

物件呼叫

物件呼叫,類名呼叫

儲存位置

堆中棧中

方法區生命週期

與物件共存亡

與方法共存亡

與類共存亡

別名例項變數

類變數

Java 中靜態變數和例項變數區別

總之,例項變數必須建立物件後才可以通過這個物件來使用,靜態變數則可以直接使用類名來引用。例如,對於下面的程式,無論建立多少個例項物件,永遠都只分配了乙個 staticint 變數,並且每建立乙個例項物件,這個 staticint 就會加 1 但是,每建立乙個例項物件,就會分配乙個 random,即可...

Java 中靜態變數和例項變數區別

靜態變數屬於類,該類不生產物件,通過類名就可以呼叫靜態變數。例項變數屬於該類的物件,必須產生該類物件,才能呼叫例項變數。在程式執行時的區別 例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,只...

靜態變數和例項變數

在語法定義上的區別 靜態變數前要加static關鍵字,而例項變數前則不加。在程式執行時的區別 例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,不用建立任何例項物件...