Java變數作用域
阿新 • • 發佈:2021-08-03
Java變數作用域
對於在作用域裡定義的變數,作用域同時決定了它的“可見性”以及“存在時間”。在JAVA裡,作用域是由花括號的位置決定的。JAVA用一對大括號作為語句塊的範圍,稱為作用域,在作用域裡定義的變數,只有在該作用域結束之前才可使用。
在JAVA中,變數的作用域分為四個級別:類級、物件例項級、方法級、塊級。
* 類級變數又稱全域性級變數或靜態變數,需要使用static關鍵字修飾。類級變數在類定義後就已經存在,佔用記憶體空間,可以通過類名來訪問,不需要例項化。
* 物件例項級變數就是成員變數,例項化後才會分配記憶體空間,才能訪問。成員變數是定義在方法之外,類之內的。成員變數隨著物件的建立而存在,隨著物件的消失而消失。
* 方法級變數就是在方法內部定義的變數,就是區域性變數。區域性變數在呼叫了對應的方法時執行到了建立該變數的語句時存在,區域性變數的作用域從它被宣告的點開始,一旦出了自己的作用域馬上從記憶體中消失。
* 塊級變數就是定義在一個塊內部的變數,變數的生存週期就是這個塊,出了這個塊就消失了,比如if、for 語句的塊。塊是指由大括號包圍的程式碼,
說明:
* 方法內部除了能訪問方法級的變數,還可以訪問類級和例項級的變數。
* 塊內部能夠訪問類級、例項級變數,如果塊被包含在方法內部,它還可以訪問方法級的變數。
1 public class Test{ 2 public static String name = "TEST"; //類級變數 3 public int i; // 物件例項級變數 4 5 // 屬性塊,在類初始化屬性時候執行 6 { 7 int j = 2;// 塊級變數 8 } 9 10 public void test1() { 11 int j = 3; // 方法級變數 12 if(j == 3) { 13 int k = 5; // 塊級變數 14 } 15 // 這裡不能訪問塊級變數,塊級變數只能在塊內部訪問 16 System.out.println("name=" + name + ", i=" + i + ", j=" + j);17 } 18 19 public static void main(String[] args) { 20 // 不建立物件,直接通過類名訪問類級變數 21 System.out.println(Test.name); 22 // 建立物件並訪問它的方法 23 Test t = new Test(); 24 t.test1(); 25 } 26 }