Java基礎——靜態變量、成員變量、局部變量

1. 變量的類型

在java語言中,變量的類型有3中:成員變量、靜態變量、局部變量

(1)成員變量

當類被實例化時,成員變量就會在內存中分配空間被初始化,直到這個實例化對象的生命週期結束時,成員變量的生命週期才結束。所以,類的成員變量的作用範圍與類的實例化對象的作用範圍相同。

(2)靜態變量

由static關鍵字修飾的成員變量被稱爲靜態變量。類似於C++中的全局變量。靜態變量不依賴於特定的實例,而是被所有的實例共享。只要一個類被加載,JVM就會給類的靜態變量分配存儲空間,因此,可以直接通過類名和變量名來訪問靜態變量。

(3)局部變量

局部變量的作用域與可見性爲它所在的花括號內。

從內存分配的角度來看,

成員變量的數據存儲於堆中該成員變量所屬的對象裏面,堆內存中存放的變量都會進行默認初始化。

局部變量(包括基本數據類型對象引用) 存放在棧內存中,局部變量的大小是可以被確定的;局部變量會在其自身所屬方法(或代碼塊)執行完畢後,被自動釋放。所以局部變量的生命週期也是可以被確定的。棧內存中存放的局部變量不會進行默認初始化。 所以,我們在聲明一個成員變量時,可以不用對其進行初始化賦值。而如果聲明一個局部變量卻未進行初始賦值,如果想對其進行使用就會報編譯異常的原因了。 

靜態變量存儲在方法區中,在類被加載時,JVM就會給爲其分配存儲空間。 

 2. 成員變量的作用域

作用域與可見性 當前類 同一package 子類 其他package
public
protected ×
default × ×
private × × ×

需要注意的是,這些修飾符只能用來修飾成員變量,不能修飾局部變量。

private和protected只能用來修飾內部類,不能修飾外部類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章