1. 程式人生 > >JAVA中static關鍵字的作用

JAVA中static關鍵字的作用

static關鍵字

特點:1.static是一個修飾符,用於修飾成員變數、成員方法。static修飾的成員變數稱之為靜態變數或類變數。

          2.static修飾的成員變數被所有的物件共享。

          3.static優先於物件存在,因為static的成員隨著類的載入就已經存在。

          4.static修飾的成員多了一種呼叫方式,可以直接被類名所呼叫。  類名.靜態成員

          5static修飾的資料是共享資料,物件中的儲存的是特有的資料。 

private static int age;//用static修飾的成員變數靜態變數或者叫做類變數
    private String name;   //成員變數
    public static void show(){//靜態函式 可直接用類來呼叫
        System.out.println("showStatic");
    }
    public void showDemo(){//成員函式 需要建立物件才可以呼叫
        System.out.println("showDemo");

    }

成員變數和靜態變數的區別:

      1.生命週期不同

            成員變數隨著物件的建立而建立,隨物件的收回而收回。

            靜態變數隨著類的載入而存在,隨類的消失而消失。

      2.呼叫方法不同

            成員變數只能被物件呼叫。

            靜態變數可以被物件呼叫,也可以用類名呼叫。(推薦用類名呼叫)

      3.別名不同

             成員變數也稱為例項變數。

             靜態變數稱為類變數。

      4.資料儲存位置不同

            成員變數資料儲存在堆記憶體的物件中,所以也叫物件的特有資料。

            靜態變數資料儲存在方法區(共享資料區)的靜態區,所以也叫物件的共享資料。

public class Demo {
    private static int age;//用static修飾的成員變數靜態變數或者叫做類變數
    private String name;   //成員變數
    public static void show(){//靜態函式 可直接用類來呼叫
        System.out.println("showStatic");
    }
    public void showDemo(){//成員函式 需要建立物件才可以呼叫
        System.out.println("showDemo");
    }
    
    public static void main(String[] args) {
        Demo.age = 1;//靜態變數可以直接用類名呼叫。隨著類載入而存在類的消失而消失
        Demo d = new Demo();
        d.age = 10;//靜態變數也可以通過物件來呼叫(推薦用類名來呼叫)
        d.name="張三";//成員變數只能通過物件來呼叫。隨著物件建立而存在隨著物件回收而釋放。
        Demo.show();//靜態方法也可以直接用類名呼叫。
        d.show();    //靜態方法也可以通過物件來呼叫。
        d.showDemo();//非靜態方法只能通過物件來呼叫。
    }

}

什麼時候使用static來修飾

      1.靜態變數:

           當分析物件中所具備的成員變數的值都是相同的,這是這個成員變數可以被靜態修飾

           只要資料在物件中都是不同的,就是物件的特有資料,碧璽儲存在資料中,是非靜態的。

           如果是相同的資料,物件不需要進行修改,只需要使用即可,不需要儲存在物件中,是靜態的。

      2.靜態函式:

            函式是否用靜態修飾,就參考一點,該函式功能是否又訪問到物件中特有的資料。

           從原始碼看,該功能是否需要訪問非靜態的成員變數,若需要,該功能就是靜態的。