什麼是靜態?
被static修飾的為靜態,static可用來修飾變數、方法、內部類、**塊。
注意:
1、static不能用來修飾外部類、介面、抽象類、抽象方法。
2、介面中的變數可以不用明確的宣告為靜態的,但必須賦值,因為變數預設為public static final。
3、介面中的方法不能被宣告為靜態的,介面中的方法預設為public abstract,屬於抽象方法。
靜態與非靜態的區別
1、變數
static修飾的變數稱為類變數或靜態變數,該變數為該類的所有例項所共享;當某個類的例項修改了靜態成員變數時,其修改值對該類的其它例項可見。
呼叫方法:直接通過類名訪問
沒有static修飾的變數稱為例項變數,該變數為該類的各物件獨立所有;當某個類的例項修改了非靜態成員變數時,其修改值對該類的其它例項不可見。
呼叫方法:必須建立物件,之後才能訪問。
2、方法
情況與變數類似。
3、類
static修飾的類只能是內部類,叫做靜態內部類。詳見靜態內部類詳解
classa
**:
publicclass
classa
測試:
publicclass
mainclass
}
從測試中可以看出:
1、在物件a1中修改了靜態變數s1,在物件a2中s1的值被改變了;可知當某個類的例項修改了靜態成員變數時,其修改值對該類的其它例項可見。
2、在物件a1中修改了非靜態變數s2,在物件a2中s2的值沒有改變;可知當某個類的例項修改了非靜態成員變數時,其修改值對該類的其它例項不可見。
3、靜態變數s1可通過
classa.s1訪問,也可以通過a1.s1訪問,其結果是一樣的;可知靜態變數並不依賴與例項,可直接通過類名進行訪問。
4、非靜態變數s2只能通過物件進行訪問;可知非靜態變數依賴於例項,訪問前必須先建立例項。
靜態與非靜態
一 靜態變數和例項變數的區別 1 靜態變數 由static修飾,在jvm中,靜態變數載入順序在物件之前,所以靜態變數不依賴物件的存在,可以不例項化物件的情況下使用類的靜態變數。通過上面的 可以看出,靜態變數可以在未例項化物件的時候使用,但是非靜態變數只能在例項化物件時候才能使用。執行結果為 30李四...
C 靜態與非靜態
public static class math 靜態類 靜態屬性 public static void add 靜態方法 注意 靜態類不能被例項化,沒有構造方法,成員全部為static 定義非靜態類 public class math 非靜態類 靜態屬性 public int myproperty...
013 靜態與非靜態
一 靜態 static 呼叫 類名.成員名 適用場景 a.你的資源需要全域性享用 共享的時候。b.如果你寫的類需要被當做工具類來使用,典型的工具類 console 靜態類中的成員必須是靜態的。靜態類不能被例項化 因為它只有乙份,例項化就會有很多份 靜態類成員先物件一步進入記憶體中。靜態成員只有在整個...