靜態域與靜態方法

追風箏的人0427發表於2019-07-27
  • 靜態域

1.靜態域又稱為類域,顧名思義在靜態域中的變數或者常量以及方法,在整個類中都是有效的。一般我們用static關鍵字來定義靜態域,被static修飾的變數或者常量以及方法,都處在靜態域中。

2.凡是處在靜態域中的變數或者常量以及方法,都歸屬於當前類,而不屬於任何一個物件。即使你沒有建立當前類的例項物件,你仍然可以通過 類名. 的方式呼叫靜態域中的變數或者常量以及方法。
例如:

public person{
    public static int personId;
}
public test{
    public static void main(String []args){
        //如果你不需要person類的例項物件,則可以向下面這樣
        //通過類名.來呼叫
        person.perosonId;
    }
}

注意:如果你要使用static修飾常量,並且許可權修飾符為public的話,建議加上final,不然的話,你的常量任意一個類都可以進行修改,那麼這個常量也就失去了意義。


  • 靜態方法
    1. 類名呼叫
    static修飾的方法就是靜態方法,靜態方法同樣可以通過類名. 的方式呼叫
    例如:
public Demo{
    public static void main(String []args){
        for(int i=0;i<5;i++){
            thread.sleep(2000); //通過類名呼叫thread類的sleep方法
            System.out.print("你好");
        }
        //這種情況我們不需要thread類的例項物件,所以用類名呼叫方法更加方便,更加節省記憶體空間。
    }
}

2. 相互呼叫
靜態方法中只能呼叫靜態方法非靜態方法既能呼叫非靜態方法,也能呼叫靜態方法。

靜態方法呼叫靜態方法:
程式會報錯,靜態方法不能呼叫非靜態方法

public Demo{
    public static void test1(){
        test2();
        test3();//程式報錯,靜態方法不能呼叫非靜態方法
    }
    
    public static void test2(){
        
    }
    
    public void test3(){
        
    }
}

非靜態方法呼叫靜態方法:
程式正常執行,非靜態方法可以呼叫靜態方法和非靜態方法

public Demo{
    public  void test1(){
        test2();
        test3();
    }
    
    public static void test2(){
        
    }
    
    public void test3(){
        
    }
    //程式正常執行
}

相關文章