靜態與非靜態

2022-08-11 02:03:17 字數 1296 閱讀 8753

什麼是靜態?

被static修飾的為靜態,static可用來修飾變數、方法、內部類、**塊。

注意:

1、static不能用來修飾外部類、介面、抽象類、抽象方法。

2、介面中的變數可以不用明確的宣告為靜態的,但必須賦值,因為變數預設為public static final。

3、介面中的方法不能被宣告為靜態的,介面中的方法預設為public abstract,屬於抽象方法。

靜態與非靜態的區別

1、變數

static修飾的變數稱為類變數靜態變數,該變數為該類的所有例項所共享;當某個類的例項修改了靜態成員變數時,其修改值對該類的其它例項可見。

呼叫方法:直接通過類名訪問

沒有static修飾的變數稱為例項變數,該變數為該類的各物件獨立所有;當某個類的例項修改了非靜態成員變數時,其修改值對該類的其它例項不可見。

呼叫方法:必須建立物件,之後才能訪問。

2、方法

情況與變數類似。

3、類

static修飾的類只能是內部類,叫做靜態內部類。詳見靜態內部類詳解

classa

**:

public

class

classa

測試:

public

class

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 靜態類中的成員必須是靜態的。靜態類不能被例項化 因為它只有乙份,例項化就會有很多份 靜態類成員先物件一步進入記憶體中。靜態成員只有在整個...