1. 程式人生 > >java中的static修飾符

java中的static修飾符

static的基本作用是: 方便在沒有建立物件的時候呼叫(屬性/方法)

先看一道例題: Math類中定義常量PI並賦值,定義方法pi()輸出π

public class Math {
   public  final double  PI = 3.1415926;
    public void  pi(){System.out.println("3.1416926"); }
}

這時候主函式想要呼叫Math類中的屬性或方法,首先要例項化一個該類物件來產生例項域中的值,並用物件調取例項域中的值。

public static void main(String[] args) {
        Math math = new Math();
        System.out.println(math.PI);
        math.pi();}

而用static修飾屬性/方法,這時會為給屬性/設定一個靜態域來存放其值。這個靜態域又叫類域,屬於類當類建立時自動產生,而與物件無關。

public class Math {
   public static final double  PI = 3.1415926;}

此時可以直接用類名呼叫屬性的值。

public static void main(String[] args) {
System.out.println(Math.PI);
 Math.pi();}

有了這個例子我們就很好理解: 對於常量而言,static只有一個副本只會在類首次載入的時候初始化 省略static後每一個物件都會有該變數的拷貝。

對於方法而言,可以認為static是沒有this引數(隱式引數)的方法。這下我們也就知道了為什麼main方法中有static,因為我們是執行main方法的時候並沒有建立物件,因此我們只能用類名來呼叫。

注意 1.在靜態方法中不能訪問類的非靜態成員變數和方法即(靜態只能呼叫靜態) 2.static不支援來修飾區域性變數(區域性變數有生命週期,執行完後java無法自動回收記憶體)