在Java編程中,我們通常有兩種變量:成員變量和全局變量。雖然它們表面上看起來(lái)很相似,但它們之間有著明顯的區(qū)別。
成員變量
成員變量是類(lèi)中定義的變量。它們定義在類(lèi)的作用域內(nèi),但在方法的作用域之外。每個(gè)對(duì)象都有自己的成員變量,這些變量的值可能每個(gè)對(duì)象都不同,因?yàn)樗鼈兪菍?shí)例化的屬性。成員變量通常使用訪問(wèn)修飾符 private、public、protected 來(lái)定義變量訪問(wèn)級(jí)別。需要注意的是,成員變量不是 Java 中的全局變量,而是對(duì)象級(jí)別的屬性。
public class MyClass { // 成員變量 private int num1 = 0; protected String str1 = "Hello"; public double dbl1 = 1.23; }
全局變量
全局變量也是類(lèi)中定義的變量,但它們定義在類(lèi)的外部,方法的內(nèi)部。全局變量是屬于整個(gè)類(lèi)的,可以在類(lèi)的所有方法中使用。如果一個(gè)變量標(biāo)記為 static,那么每個(gè)實(shí)例化的對(duì)象都共享這個(gè)變量,而靜態(tài)變量稱為類(lèi)的成員變量。
public class MyClass { // 全局變量 static int num2 = 0; static String str2 = "Hi"; static double dbl2 = 3.45; }
區(qū)別
顯然,成員變量和全局變量之間的最大區(qū)別是它們的作用范圍和對(duì)象關(guān)聯(lián)。成員變量是每個(gè)對(duì)象的屬性,而全局變量是整個(gè)類(lèi)的屬性。此外,對(duì)于成員變量,每個(gè)對(duì)象都有自己的屬性值,而全局變量則被整個(gè)類(lèi)共享,因此其值對(duì)于所有對(duì)象來(lái)說(shuō)是相同的。
因此,如果您想定義每個(gè)對(duì)象都有不同屬性值的屬性,則應(yīng)使用成員變量。另一方面,如果需要定義整個(gè)類(lèi)都共享的變量,則應(yīng)使用全局變量。