1. 程式人生 > >Java中static的用法

Java中static的用法

        在Java中,有一個使用頻率非常高的關鍵字——static,那麼大家知道它的用法嗎?下面我們一起來了解一下它吧。

1、static的用法:

        static可以用來修飾成員變數、成員方法以及程式碼塊等,被static關鍵字修飾的成員都會具備一些特殊屬性。

2、static修飾成員變數:

        被static修飾的成員變數叫做靜態變數。靜態變數具有以下兩個特徵:

           a.靜態變數的資料被本類中所有例項物件所共享;

           b.如果該靜態變數的訪問許可權高於private,則該靜態變數可通過“類名.變數名”直接訪問。

       下面通過簡單的例項來驗證一下:

  定義一個學生類:

public class Student {
	static String school="CSU";
}

定義一個測試類:

public class Test {

    public static void main(String[] args) {
        // 通過“類名.變數”名呼叫靜態變數
        System.out.println("Student.school:" + Student.school);
        // 建立學生物件
        Student s1 = new Student();
        Student s2 = new Student();
        // 輸出例項物件靜態變數屬性
        System.out.println("s1.school:" + s1.school + "-----"+"s2.school:" + s2.school);
        // 修改其中一個例項物件的靜態變數屬性
        s1.school = "HNU";
        // 輸出例項物件靜態變數屬性
        System.out.println("s1.school:" + s1.school + "-----"+"s2.school:" + s2.school);
    }
}

輸出結果:

       輸出結果基本驗證了上述說法。值得注意的是,因為被static修飾的變數其值被類中所有例項物件所共享,所以其中任意一個例項物件修改了靜態變數值,其它例項物件該靜態變數值也會被修改。從儲存的角度來說,系統在記憶體中只為類中的靜態變數提供了一份資料,而未在類中各例項物件所佔有的記憶體空間中再建立該變數。 

    注:訪問許可權:public>protected>default(一般省略)>private。

3、static修飾成員方法:

     在類中,被static修飾的方法稱作靜態方法。同靜態變數一樣,如果該靜態方法的訪問許可權高於private,則該靜態方法可通過“類名.方法名”直接呼叫,而不需要建立物件呼叫。

 下面也通過一個例項來看一下:

定義另一個學生類:

public class Student1 {
	static void study() {
		System.out.println("學習中");
	}
}

定義測試類:

public class Test1 {
	public static void main(String[] args) {
		Student1.study();
	}
}

輸出結果:

      需要注意的是,靜態方法只能訪問被static修飾的成員,其原因就在於靜態方法不需要建立物件就可以被呼叫。

4、static修飾程式碼塊:

    在java中,被static修飾的程式碼塊被稱作靜態程式碼塊。靜態程式碼塊在類被載入時,就會被執行,並且只會執行一次(類只會載入一次)。詳見例項:

定義一個學生類:

public class Student2 {
	static{
		System.out.println("靜態程式碼塊");
	}
	
	public void showName (String name){
		System.out.println(name);
	}
}

定義一個測試類:

public class Test2 {
	public static void main(String[] args) {
		Student2 s1=new Student2();
		Student2 s2=new Student2();
		s1.showName("張三");
		s2.showName("李四");
	}
}

輸出結果:

根據輸出結果,靜態程式碼塊僅被執行一次,並且在類載入時就開始執行,優先於類中的方法。  

好了,關於static關鍵字的用法暫時就介紹到這了(目前也只知道這些用法~)。