1. 程式人生 > 其它 >Java中static關鍵字的作用

Java中static關鍵字的作用

static關鍵字主要有兩種作用:

第一,為某特定資料型別或物件分配單一的儲存空間,而與建立物件的個數無關。

第二,實現某個方法或屬性與類而不是物件關聯在一起

具體而言,在Java語言中,static主要有4中使用情況:成員變數、成員方法、程式碼塊和內部類

(1)static成員變數:

Java類提供了兩種型別的變數:用static關鍵字修飾的靜態變數和不用static關鍵字修飾的例項變數。靜態變數屬於類,在記憶體中只有一個複製,只要靜態變數所在的類被載入,這個靜態變數就會被分配空間,因此就可以被使用了。對靜態變數的引用有兩種方式,分別是“類.靜態變數"和”物件.靜態變數"

例項變數屬於物件,只有物件被建立後,例項變數才會被分配記憶體空間,才能被使用,它在記憶體中存在多個複製,只有用“物件.例項變數”的方式來引用。

(2)static成員方法:

Java中提供了static方法和非static方法。static方法是類的方法,不需要建立物件就可以被呼叫,而非static方法是物件的方法,只有物件被創建出來後才可以被使用

static方法中不能使用this和super關鍵字,不能呼叫非static方法,只能訪問所屬類的靜態成員變數和成員方法,因為當static方法被呼叫時,這個類的物件可能還沒被建立,即使已經被建立了,也無法確定呼叫哪個物件的方法。同理,static方法也不能訪問非static型別的變數。

單例設計模式:

static一個很重要的用途就是實現單例設計模式。單利模式的特點是該類只能有一個例項,為了實現這一功能,必須隱藏類的建構函式,即把建構函式宣告為private,並提供一個建立物件的方法,由於構造物件被宣告為private,外界無法直接建立這個型別的物件,只能通過該類提供的方法來獲取類的物件,要達到這樣的目的只能把建立物件的方法宣告為static,程式例項如下:

class Singleton{
	private static Singleton instance=null;
	private Singleton(){}
	public static Singleton getInstance(){
		if(instance==null){
			instance=new Singleton();
		}
		return instance;
	}
}

(3)static程式碼塊

static程式碼塊在類中是獨立於成員變數和成員函式的程式碼塊的。注意:這些static程式碼塊只會被執行一次

(4)static與final結合使用表示的意思:

對於變數,若使用static final修飾,表示一旦賦值不能修改,並且通過類名可以訪問。

對於方法,若使用static final修飾,表示該方法不可被覆蓋,並且可以通過類名直接訪問。

public class Test{

public static int testStatic(){

static final int i=0;

System.out.println(i++);

}

public static void main(String[] args){

Test test=new Test();

test.testStatic();

}

}

上述程式執行的結果:

A 0 B 1 C 2 D 編譯失敗

答案:D

在Java語言中,不能在成員函式內部定義static變數

轉自:http://blog.csdn.net/jsqfengbao/article/details/44724219