1 static修飾符
類的成員變量分為靜态變量和執行個體變量, 被stacit修飾的變量,叫靜态變量,沒被修飾的就是執行個體變量了.
靜态變量的特點,在于其在記憶體中隻有一個COPY,在使用時不需要執行個體化,直接用類名來調用就可以了.
同樣,比如
public static int add()
這樣的叫靜态方法,同樣,使用靜态方法時不需要執行個體化類.
在靜态方法中要注意兩點
A 靜态方法中,不能用this關鍵字,也不能通路非靜态變量,比如
public class Voter{
private static int count;
private String name;
public static void printVoteResult(){
System.out.println("目前投票數為:"+count); //正确
System.out.println("目前投票數為:"+name); //錯誤
System.out.println("目前投票數為:"+this.name); //錯誤
同樣,靜态方法中不能用super關鍵字
此外,靜态方法必須被實作,因為靜态方法是表示某個類的特有功能,不需要執行個體化,是以必須要給實作.,比如
static abstract void add()是錯誤的。
2 類的初始化
A 對于final類型的變量,如果在編譯時能計算其值,則此時該類不會被初始化,比如
class Tester
{
public static final int a=2*3;
static
{
System.out.println("abc");
}
}
public class samle
{
System.out.println("a="+Tester.a);
}
則隻會輸出a=6
而如果是編譯時算不出的話,則要初始化這個類,比如
public static final int a=....運算表達式;
3 final修飾符
final修飾的方法不能被子類的方法覆寫,修飾的類不能被子類繼承,要注意的是,在一個類中,如果出現final常量,則必須被初始化,
比如
public a
final int a;//錯誤