static(靜態)
static能夠修飾方法,屬性,自由塊和內部類
使用static修飾這些成員,能夠理解成與類相關。經過「類名.成員」的形式調用,
沒有static修飾能夠理解這些成員與對象相關,能夠經過「對象名.成員」的形式調用
注意:static不能用來修飾構造方法java
1.static修飾方法 如:main方法
main()是java引用程序的主入口方法,在該方法前添加static修飾表示該方法與類相關,java解析運行時將會
尋找該方法,之因此將main()定義成類相關,解析器調用該方法時,尚未建立當前的對象,所以不能定義成
與對象相關的方法。
注意:static修飾方法中,不能調用沒有stataic修飾的方法和屬性,也不能使用this和super。this
2.static修飾屬性。
靜態屬性具備static方法的特色外,還有一個主要的特徵就是:靜態屬性被當前類中多個對象共享時,
一個對象修改對象的值後,會影響其餘對象。
public class Test{
public static int count=0;
public Test(){
count++;
}
public static void main(String[] args){
Test t1=new Test();
system.out.println(t1.count);
Test t2 = new Test();
system.out.println(t2.count);
}spa
}
輸出的結果是1和2.
上例子中,count是一個靜態變量,所以t1和t2共享count.當建立t1對象時,構造方法將count加1,
當再次建立t2對象時,count在次基礎上在加1。對象
3.static修飾自由塊
自由塊是放在{}括起來的代碼段,自由塊中的代碼在構造方法以前執行,所以能夠將一部分初始化代碼放在自由塊中。
當使用static修飾自由塊時,自由塊江變成靜態自由塊,一般用於初始化靜態變量,靜態自由塊與類相關,所以只要類加載,
即便沒有對象也會執行,靜態自由塊不管建立幾個對象,僅執行一次。
public class Test{
private static int i;
static{
system.out.println("靜態自由塊");
i++;
}
public void show(){
system.out.println(i);
}
public static void mian(String[] args){
Test t1 = new Test();
t1.show();
Test t2 = new Test();
t2.show();
}
}
建立兩個對象時,靜態自由塊也是執行一次。class