java中就沒有全局變量這個概念,只分為成員變量和局部變量。
成員變量:Static修飾成為類變量或靜態變量,還有就是方法外的變量。生命周期與類相同。
局部變量:就是方法中的變量。生命周期就是再次方法中。
但是,很多人學習都是先學習的C語言,C語言中存在全局變量這個概念,所以,大家對於Java中的成員變量有時候也稱之為全局變量,同時也存在如下的一個約定俗成的小區別
使用static 關鍵字進行聲明的變量叫做全局變量
在函數外面定義的變量叫做成員變量
成員變量
- 成員變量定義在類中,在整個類中都可以被訪問。
- 成員變量隨着對象的建立而建立,隨着對象的消失而消失,存在於對象所在的堆內存中。
- 成員變量有默認初始化值。
局部變量
- 局部變量只定義在局部范圍內,如:函數內,語句內等,只在所屬的區域有效。
- 局部變量存在於棧內存中,作用的范圍結束,變量空間會自動釋放。
- 局部變量沒有默認初始化值
在使用變量時需要遵循的原則為:就近原則
首先在局部范圍找,有就使用;接着在成員位置找。
靜態變量(也叫做類變量,類屬性)
由static修飾的變量稱為靜態變量,其實質上就是一個全局變量。如果某個內容是被所有對象所共享,那么該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬於對象的特殊描述。
成員變量和靜態變量的區別
1.兩個變量的生命周期不同
- 成員變量隨着對象的創建而存在,隨着對象被回收而釋放。
- 靜態變量隨着類的加載而存在,隨着類的消失而消失。
2.調用方式不同
- 成員變量只能被對象調用。
- 靜態變量可以被對象調用,還可以被類名調用。
3.別名不同
- 成員變量也稱為實例變量。
- 靜態變量也稱為類變量。
4.數據存儲位置不同
- 成員變量存儲在堆內存的對象中,所以也叫對象的特有數據。
- 靜態變量數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據。