對於static相信你們對此並不會感受到陌生吧,由於任何的程序都應該具備一個main你們還記得吧。Public static void main(String[] args)這樣就定義了一個靜態的main方法,可是在用的同時不多真正去研究它爲何要定義成static或者說這樣的好處是什麼,今天特定去翻看了一些書籍,也當作個總結但願對你們有幫助。 傳統的對象定義:
class A {編程
public void write(String message){函數
System.out.println(message);學習
}this
}spa
上面咱們定義了一個類名稱爲A,那麼普通的對象要使用必須經過下面的方式,只有經過new來產生對象,不然就不存在任何實質的對象,因此只有在產生對象纔會被分配出來,函數才能夠供其餘調用code
A a1=new A();對象
A a2=new A2();內存
那麼上面的這種建立其實就是跟對象創建一個關係,那麼存儲的狀態應該是a1,a2分別建立二個對象空間,那麼每一個對象都有write這個方法,那麼咱們在調用的時候必須信賴於對象來進行相應的訪問。it
而static的函數方法是在建立以前就存在的,它脫離了對象自己,那麼無論你建立多少個對象那麼它的static方法或屬性都只會有一個。io
class B{
public int i=8;
public static void write(){
System.out.println(this.i);
}
}
上面定義了一個B的類,在B中有一個公共的write方法,那麼無論你建立多麼個類而write方法只會有一個,那麼若是要使用不須要再建立B這個類,只須要在其餘的類中B.write()來調用,這跟普通的一個區別由於他不用對象的建立就存在在內存中並且調用的方法是直接用類名而不是對象名。
上面我特別留了一個錯誤,不信你本身運行一下,對於任何的static方法而言其實不能訪問本類的普通對象,由於他們在建立的時候不是在同一個命名空間,因此你要使用i的話必須在write中建立B再調用這樣就訪問。
你們若是有什麼更好的理解能夠發出來,無論怎樣分享的目的主要是以學習爲最終目的。