- 靜態域
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(){
}
//程式正常執行
}