1. 程式人生 > 實用技巧 >Java基礎——static修飾符

Java基礎——static修飾符

static

static在多種計算機語言在常有用到
static在java語言中作為修飾符也有著重要的地位

引入

  • static修飾屬性,可生成靜態屬性
  • static修飾方法,可生成靜態方法
  • static修飾程式碼塊,可生成靜態程式碼塊
  • static修飾類,可生成靜態類

靜態屬性

//許可權修飾符 static 資料型別 名稱;
public static int num;

各個物件資料進行溝通,實現資料的共享

特點

  • static宣告的屬性為類屬性
  • 建立物件時,不產生static屬性的拷貝
  • 類所有例項共享一個static屬性
  • 類裝載時,只分配一塊儲存空間,所以類的物件進行操作
  • 靜態屬性值一旦改變,所有類的物件均共享改變

訪問方式

由特點可知:

  1. 靜態屬性不屬於任何例項,屬於類物件
  2. 所以該類的例項都可進行操作靜態屬性
  • 類名.公有靜態屬性名
  • 物件名.公有靜態屬性名
//Demo為含有公有靜態屬性num的類
Demo d = new Demo();
//第一種方法
Demo.num = 1;
//第二種方法
d.num = 2;

靜態方法

//許可權修飾符 static 返回值型別 方法名(引數){
//      方法體;
//}
private static int num = 1;
public static int getNum(){
      return num;
}

java的三大特性之一:封裝
為了體現java的特性,所有類的屬性一般設為私有(private

),
為了訪問私有的靜態成員,需要靜態方法來實現該功能。

特點

  • 不呼叫不執行。
  • static方法獨立於任何例項,因此static方法必須被實現,而不能是抽象的(abstract)

訪問方式

  • 類名.公有靜態方法名(引數);
  • 物件名.公有靜態方法名(引數);
//Demo為含有私有靜態屬性num、公有靜態方法getNum的類
Demo d = new Demo();
//第一種方法,用的最多
Demo.getNum();
//第二種方法
d.getNum();

使用規則

  1. 在靜態方法中,只能直接呼叫其他static型別的方法
  2. 在靜態方法中,只能直接訪問static型別的屬性
  3. 在靜態方法中,不能使用this
    super

靜態程式碼塊

靜態程式碼塊主要是初始化類中的靜態變數。

static{
      //程式碼塊
}

特點

僅在類被載入時執行一次。

繼承順序

//父類
public class Parent{
      static{
            //程式碼塊1
      }
      Parent(){
            //程式碼2
      }
}

//子類
public class Son extends Parent{
      static{
            //程式碼塊3
      }
      Son(){
            //程式碼4
      }
}
//執行順序
//程式碼1
//程式碼3
//程式碼2
//程式碼4

當一個類繼承父類,父類和該類中有靜態程式碼塊
在該類載入時,程式碼的執行順序為:

  1. 父類的靜態程式碼塊
  2. 子類的靜態程式碼塊
  3. 父類的構造方法
  4. 子類的構造方法

靜態與非靜態順序

  1. 靜態屬性/靜態程式碼塊
  2. 非靜態屬性/非靜態程式碼塊
  3. 構造方法

靜態類

普通類不允許宣告為靜態,內部類可以
宣告為靜態的內部類可以直接作為一個普通類來使用,而不需例項化一個外部類。

final

final和static一起使用,修飾成員變數和方法,可作為全域性常量

  • static final 常量,一旦賦值不可修改,可通過類名訪問

  • static final 方法, 不可覆蓋,可通過類名訪問


部落格相關java專案:檢視Github專案

對應github專案:Static

匯入專案的方法: Java基礎——Java如何匯入本地專案