java中的靜態方法


靜態方法:static

靜態方法可以用類名調用,而非靜態方法不能用類名調用,只能用實例對象調用

靜態方法:靜態方法會隨着類的定義而被分配和裝載入內存中。靜態方法可以調用靜態方法以及訪問靜態數據域,但靜態方法不能調用實例方法或者訪問實例數據域。

實例方法:只有在類的對象創建時在對象的內存中才有這個方法的代碼段。實例方法可以調用實例方法和靜態方法,以及訪問實例數據域或者靜態數據域。

引用靜態方法時,可以用類名.方法名或者對象名.方法名的形式。

 

靜態變量:靜態變量被類中所有的對象所共享,它將變量值存儲在一個公共的內存地址,因為地址公共,所以如果某個對象修改了靜態變量的值,那么同一個類的所有對象都會受到影響。

非靜態變量:非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。

 

靜態意味着它只在類被加載時創建一次,只擁有一個拷貝,不會隨着創建的實例對象的增加而增加

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

3.static的一些特點:

(1)、當使用到類時,類被加載到內存,而靜態成員隨着類的加載而加載;

(2)、靜態成員可以用類名直接調用,它是優先於對象而存在的;

(3)、它為所有的對象所共享,都可以來調用。它是先於對象而存在的。

4.實例變量和靜態變量的一些區別:

(1)實例變量隨着對象的產生而被封裝在堆內存中,而靜態變量隨着類的加載而加載到方法區中。

(2)存儲空間不同,生命周期不同。

(3)靜態的方法中不可以定義this super 等關鍵字,因為靜態是先於對象而存在的,this是當前對象的引用

 

5.main方法為什么用static來定義?

在C/C++當中,這個main方法並不是屬於某一個類的,它是一個全局的方法,所以當我們執行的時候,c++編譯器很容易的就能找到這個main方法,然而當我們執行一個java程序的時候,因為java都是以類作為程序的組織單元,當我們要執行的時候,我們並不知道這個main方法會放到哪個類當中,也不知道是否是要產生類的一個對象,為了解決程序的運行問題,我們將這個main方法定義為static,這樣的話,當我們在執行一個java代碼的時候,我們在命令提示符中寫:java Point(Point為一個類),解釋器就會在Point這個類當中,去調用這個靜態的main方法,而不需要產生Point這個類的對象,當我們加載Point這個類的時候,那么main方法也被加載了,作為我們java程序的一個入口。

如果一個方法沒有用static來修飾的話就說明這是一個成員方法,只能通過對象來調用這個方法。在Java程序運行時,是沒有實例化任何對象的,只能通過調用類方法來運行main方法,所以會用static來修飾


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM