atic的個人理解 – JAVA編程語言程序開發技術文章

對於static相信大傢對此並不會感覺到陌生吧,因為任何的程序都應該具有一個main大傢還記得吧。Public static void main(String[] args)這樣就定義瞭一個靜態的main方法,但是在用的同時很少真正去研究它為什麼要定義成static或者說這樣的好處是什麼,今天特定去翻看瞭一些書籍,也當做個總結希望對大傢有幫助。
傳統的對象定義:class A {

publicvoid write(String message){

System.out.println(message);

}

}

上面我們定義瞭一個類名稱為A,那麼普通的對象要使用必須通過下面的方式,隻有通過new來產生對象,否則就不存在任何實質的對象,所以隻有在產生對象才會被分配出來,函數才可以供其他調用

A a1=new A();

A a2=new A2();

那麼上面的這種創建其實就是跟對象建立一個關系,那麼存儲的狀態應該是a1,a2分別創建二個對象空間,那麼每個對象都有write這個方法,那麼我們在調用的時候必須信賴於對象來進行相應的訪問。

而static的函數方法是在創建之前就存在的,它脫離瞭對象本身,那麼不管你創建多少個對象那麼它的static方法或屬性都隻會有一個。

class B{

publicinti=8;

publicstaticvoid write(){

System.out.println(this.i);

}

}

上面定義瞭一個B的類,在B中有一個公共的write方法,那麼不管你創建多麼個類而write方法隻會有一個,那麼如果要使用不需要再創建B這個類,隻需要在其他的類中B.write()來調用,這跟普通的一個區別因為他不用對象的創建就存在在內存中而且調用的方法是直接用類名而不是對象名。

你發現瞭?
上面我特別留瞭一個錯誤,不信你自己運行一下,對於任何的static方法而言其實不能訪問本類的普通對象,因為他們在創建的時候不是在同一個命名空間,所以你要使用i的話必須在write中創建B再調用這樣就訪問。

總結:其實就像《JAVA編程思想》中說的那樣static通常是被做為‘牧羊人'的角色,那麼抽象的來理解就是在一個類中創建static方法那麼這個方法的作用就是用來管理所有隸屬這個型別的孵生的對象。
大傢如果有什麼更好的理解可以發出來,不管怎樣分享的目的主要是以學習為最終目的。

 

樓主剛來北京無業狀態,如果哪位前輩就職的公司需要相應的android開發人員麻煩告訴一下,在此先謝過各位瞭

摘自 夜風雪

發佈留言