概念:
類變量也稱爲靜態變量,在類中以 static 關鍵字聲明,但必須在方法之外。無論一個類創建了多少個對象,類只擁有類變量的一份拷貝。靜態變量除了被聲明爲常量外很少使用。常量是指聲明爲public/private,final和static類型的變量。常量初始化後不可改變。靜態變量儲存在靜態存儲區。經常被聲明爲常量,很少單獨使用static聲明變量。靜態變量在第一次被訪問時創建,在程序結束時銷燬。與實例變量具有相似的可見性。但爲了對類的使用者可見,大多數靜態變量聲明爲public類型。默認值和實例變量相似。數值型變量默認值是0,布爾型默認值是false,引用類型默認值是null。變量的值可以在聲明的時候指定,也可以在構造方法中指定。此外,靜態變量還可以在靜態語句塊中初始化。靜態變量可以通過:ClassName.VariableName的方式訪問。類變量被聲明爲public static final類型時,類變量名稱一般建議使用大寫字母。如果靜態變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。
class A {
public static String StaticA = "A";
static {
StaticA = "A1";
}
public A() {
StaticA = "A2";
}
public static void Change() {
StaticA = "A3";
}
public static void Change2() {
StaticA = "A4";
}
}
class B {
public static final String StaticB;
static {
StaticB = "StaticB";
}
}
public class StaticTest {
private static Integer StaticInt = 1;
private Integer random = 1;
public StaticTest() {
StaticInt++;
random++;
}
public static void main(String[] args) {
System.out.println("類變量與對象變量的值變化");
StaticTest test = new StaticTest();
System.out.println("實例test:StaticInt:" + test.StaticInt + "----random:" + test.random);
StaticTest test2 = new StaticTest();
System.out.println("實例test2:StaticInt:" + test.StaticInt + "----random:" + test.random);
System.out.println("靜態變量賦值");
System.out.println("靜態語句塊起作用:" + A.StaticA);
A a = new A();
System.out.println("構造器起作用:" + a.StaticA);
a.Change();
System.out.println("靜態方法1起作用:" + A.StaticA);
a.Change2();
System.out.println("靜態方法2起作用:" + A.StaticA);
System.out.println("常量賦值");
System.out.println("靜態語句賦值:" + B.StaticB);
}
}
timit@TIMI:/home/workplace$ java StaticTest
類變量與對象變量的值變化
實例test:StaticInt:2----random:2
實例test2:StaticInt:3----random:2
靜態變量賦值
靜態語句塊起作用:A1
構造器起作用:A2
靜態方法1起作用:A3
靜態方法2起作用:A4
常量賦值
靜態語句賦值:StaticB