java static總結

     static聲明的有三種:1.靜態變量,2,靜態方法。3.靜態類

  1.靜態變量:靜態變量相當於c中的全局變量

按照是否靜態的對類成員變量進行分類可分兩種:一種是被static修飾的變量,叫靜態變量或類變量;另一種是沒有被static修飾的變量,叫實例變量。

 兩者的區別是:

      對於靜態變量在內存中只有一個拷貝(節省內存),JVM只爲靜態分配一次內存,在加載類的過程中完成靜態變量的內存分配,可用類名直接訪問(方便),當然也可以通過對象來訪問(但是這是不推薦的)。

     對於實例變量,每創建一個實例,就會爲實例變量分配一次內存,實例變量可以在內存中有多個拷貝,互不影響,非常靈活。

        靜態變量:所有此類實例共享此靜態變量,也就是說在類裝載時,只分配一塊存儲空間,所有此類的對象都可以操控此塊存儲空間

        聲明爲static的變量實質上就是全局變量。當聲明一個對象時,並不產生static變量的拷貝,而是該類所有的實例變量共用同一個static變量。

  

class Value{
		static int c=0;
		static void inc(){
			c++;
		}
}
class Count{
		public static void prt(String s){
		System.out.println(s);
}
		public static void main(String[] args){
			Value v1,v2;
			v1=new Value();
			v2=new Value();
			prt("v1.c="+v1.c+" v2.c="+v2.c);
			//結果v1.c=0 v2.c=0
			v1.inc();//共享一塊存儲區,v1變化v2也變化
			prt("v1.c="+v1.c+" v2.c="+v2.c); 
			//結果v1.c=1 v2.c=1
		}
}
 

   在static{後面跟着一段代碼,這是用來進行顯式的靜態變量初始化,這段代碼只會初始化一次,且在類被第一次裝載時。

class Count
{
	public static void prt(String s){
	System.out.println(s);
}
	Value v=new Value(10);
	
	static Value v1,v2;

Static{
		prt("v1.c="+v1.c+" v2.c="+v2.c);
		v1=new Value(27);
		prt("v1.c="+v1.c+" v2.c="+v2.c);
		v2=new Value(15);
		prt("v1.c="+v1.c+" v2.c="+v2.c);
		}
} 

2.靜態方法:相當於全局函數

         通常,在一個類中定義一個方法爲static,那就是說,無需本類的對象即可調用此方法

如果一個成員被聲明爲static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。你可以將方法和變量都聲明爲static。static 成員的最常見的例子是main( ) 。因爲在程序開始執行時必須調用main() ,所以它被聲明爲static。

 

       我們定義了一個靜態的方法名爲main,這就意味着告訴Java編譯器,我這個方法不需要創建一個此類的對象即可使用。

靜態方法有幾條限制:

      1.       只能調用其他的static方法

      2.       只能訪問static數據

       3.       不能以任何方式引用this和super

public class HelloWorld{
	
	//靜態方法,
	public static void main(String[] args){ 
			System.out.println("Hello,world!"); 
			
  }
}

3.靜態類:

         通常一個普通類不允許聲明爲靜態的,只有一個內部類纔可以。這時這個聲明爲靜態的內部類可以直接作爲一個普通類來使用,而不需實例一個外部類。

 

public class StaticCls{
		public static void main(String[] args){
			OuterCls.InnerCls oi=new OuterCls.InnerCls();
		}
}

class OuterCls{
  public static class InnerCls{
		InnerCls(){
				System.out.println("InnerCls");
	  }
  }
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章