Java 中變量的作用域一直是開發工程師在面試中經常會遇到的話題之一。Java 中的變量可分為局部變量和全局變量。那么它們有什么區別呢?
首先介紹一下局部變量。局部變量指的是在方法、構造函數或語句塊中聲明的變量。它們的作用域僅限于聲明它們的方法、構造函數或語句塊內部。局部變量必須在聲明后才能使用。在局部變量的作用域內,若多次聲明了同名變量,則編譯器會報錯。
public void method(){ int a = 1; // 局部變量 }
全局變量指的是在類的頂層聲明的變量(非方法、構造函數或語句塊中聲明的)。全局變量的作用域在整個類內可見,包括類中的所有方法和構造函數。全局變量定義后可以被該類中的任意方法調用,但在使用全局變量之前,需要對其進行初始化。
public class Example { int a = 1; //全局變量 public void method(){ System.out.println(a); // 合法 } public static void main(String args[]) { Example obj = new Example(); System.out.println(obj.a); // 合法 } }
需要注意的是,如果在方法中用一個與全局變量同名的局部變量,那么該局部變量將會隱藏全局變量,方法內的操作都是針對局部變量進行的。
public class Example { int a = 1; //全局變量 public void method(int a) { System.out.println(a); // 輸出方法的局部變量a的值 } public static void main(String args[]) { Example obj = new Example(); obj.method(2); // 傳遞的是方法的局部變量 } }
關于局部變量和全局變量的使用,應該視情況而定。準確理解它們之間的區別,才能寫出高質量的代碼。