標籤:使用 靜態 產生 方法 return 之間 試題 get dem
一、執行個體變數
也叫物件變數、類成員變數;從屬於類由類產生對象時,才分配儲存空間,各對象間的執行個體變數互不干擾,能通過對象的引用來訪問執行個體變數。但在Java多線程中,執行個體變數是多個線程共用資源,要注意同步訪問時可能出現的問題。
[java] view plain copy
- <span style="font-size:14px;">public class Demo {
- //以下都是執行個體變數(成員變數、物件變數)
- private String nameString;
- public int age;
- protected int priority;
- //執行個體方法
- public String getNameString(){
- return this.nameString;
- }
- }</span>
二、類變數
也叫靜態變數,是一種比較特殊的執行個體變數,用static關鍵字修飾;一個類的靜態變數,所有由這類產生的對象都共用這個類變數,類裝載時就分配儲存空間。一個對象修改了變數,則所以對象中這個變數的值都會發生改變。
[java] view plain copy
- <span style="font-size:14px;">public class Demo {
- //類變數(靜態變數)
- public static int a = 0;
- //執行個體變數
- private String nameString;
- }</span>
三、局部變數
方法中或者某局部塊中聲明定義的變數或方法的參數被稱為局部變數,他們只存在於建立他們的block裡({}之間)無法在block外進行任何操作,如讀取、賦值。在Java多線程中,每個線程都複製一份局部變數,可防止某些同步問題發生。
[java] view plain copy
- <span style="font-size:14px;"> //類變數(靜態變數)
- public static int a = 0;
- //執行個體變數
- private String nameString;
-
- public void test(){
- //局部變數
- int temp = 1;
- System.out.println(temp);
- }</span>
四、他們的區別
成員變數和局部變數的區別
成員變數:
①成員變數定義在類中,在整個類中都可以被訪問。
②成員變數隨著對象的建立而建立,隨著對象的消失而消失,存在於對象所在的堆記憶體中。
③成員變數有預設初始化值。
局部變數:
①局部變數只定義在局部範圍內,如:函數內,語句內等,只在所屬的地區有效。
②局部變數存在於棧記憶體中,作用的範圍結束,變數空間會自動釋放。
③局部變數沒有預設初始化值
在使用變數時需要遵循的原則為:就近原則
首先在局部範圍找,有就使用;接著在成員位置找
成員變數和靜態變數的區別
1、兩個變數的生命週期不同
成員變數隨著對象的建立而存在,隨著對象被回收而釋放。
靜態變數隨著類的載入而存在,隨著類的消失而消失。
2、調用方式不同
成員變數只能被對象調用。
靜態變數可以被對象調用,還可以被類名調用。
3、別名不同
成員變數也稱為執行個體變數。
靜態變數也稱為類變數。
4、資料存放區位置不同
成員變數儲存在堆記憶體的對象中,所以也叫對象的特有資料。
靜態變數資料存放區在方法區(共用資料區)的靜態區,所以也叫對象的共用資料。
面試題:java執行個體變數,局部變數,類變數