Java基礎之static關鍵字的使用講解
static關鍵字
在Java中,static是靜態(tài)修飾關鍵字。用于修飾類的成員方法、類的成員變量,另外可以編寫static代碼塊來優(yōu)化程序性能;被static關鍵字修飾的方法或者變量不需要依賴于對象來進行訪問,只要類被加載了,就可以通過類名去進行訪問。
static關鍵字的作用
方便在沒有創(chuàng)建對象的情況下來進行調用方法或者變量。被static關鍵字修飾的方法或者變量不需要依賴對象來進行訪問,只要類被加載了,就可以通過類名去訪問。
1.static修飾成員方法
static修飾的方法稱為靜態(tài)方法,由于靜態(tài)方法不依賴任何對象就能夠訪問,因此靜態(tài)方法中不能用this和super關鍵字,不能直接訪問所屬類的實例變量和實例方法,只能訪問所屬類的靜態(tài)成員變量和成員方法。代碼示例:
從上面代碼看出,在靜態(tài)方法t2調用非靜態(tài)成員變量age和非靜態(tài)成員方法t1時,系統(tǒng)報錯。同時在靜態(tài)方法t3中調用靜態(tài)方法t2,編譯通過。得出結論:在靜態(tài)方法中不能訪問非靜態(tài)成員變量和非靜態(tài)成員方法,但在非靜態(tài)成員方法中能夠訪問靜態(tài)成員方法和靜態(tài)成員變量。同時靜態(tài)的只能訪問靜態(tài)的。
2.static修飾成員變量
按照是否是靜態(tài)的可對類成員變量進行分類:一種是被static修飾的變量,叫做靜態(tài)變量或者類變量;另一種是沒有被static修飾的變量,叫實例變量。
靜態(tài)變量和非靜態(tài)變量的區(qū)別:
- 靜態(tài)變量被所有對象共享,在內存中只有一個副本,在類初次加載的時候才會初始化。
- 非靜態(tài)變量是對象所擁有的,在創(chuàng)建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。
static成員變量的初始化順序按照定義的順序進行初始化。
3.static修飾代碼塊
static關鍵字還可用來形成靜態(tài)代碼塊來優(yōu)化程序性能,原因是它的特性:只會在類被初次加載的時候執(zhí)行一次。
靜態(tài)方法只能繼承,不能重寫
代碼示例如下:
上面代碼中在父類和子類中各自定義一個aa方法,在左邊顯示為Override標識;但在父類和子類中各自定義一個static方法test,但并沒有出現(xiàn)Override標識,由此可知用static修飾的方法不能被重寫。同時,如果子類不用static關鍵字修飾,繼承父類時編譯出錯,可知靜態(tài)方法只能被靜態(tài)方法繼承。
總結
- static是一個修飾符,用來修飾成員,被修飾的成員變量稱為靜態(tài)變量或類變量。
- static修飾的成員被所有的對象共享。
- static修飾的成員能直接被類名調用,形式為:類名.靜態(tài)成員。
- 靜態(tài)的只能訪問靜態(tài)的。
- static關鍵字不能改變變量和方法的訪問權限。
- 靜態(tài)成員變量雖然獨立于對象,但是不代表不能通過對象去訪問,所有的靜態(tài)方法和靜態(tài)變量都可以通過對象訪問,只要訪問權限足夠。
- static不允許用來修飾局部變量。
到此這篇關于Java基礎之static關鍵字的使用講解的文章就介紹到這了,更多相關Java基礎之static內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring的@ConfigurationProperties注解詳解
這篇文章主要介紹了Spring的@ConfigurationProperties注解詳解,@ConfigurationProperties該注解是用來獲取yml或者properties配置文件的配置信息,下面根據(jù)一些配置信息給出案例代碼進行講解,需要的朋友可以參考下2023-11-11Java使用@Autowired注解獲取對象為null的幾種情況及解決方法
這篇文章主要給大家介紹了使用@Autowired注解獲取對象為null的幾種情況以及?解決方法,文中有詳細的代碼示例講解,具有一定的參考價值,需要的朋友可以參考下2023-09-09基于SpringBoot與Mybatis實現(xiàn)SpringMVC Web項目
這篇文章主要介紹了基于SpringBoot與Mybatis實現(xiàn)SpringMVC Web項目的相關資料,需要的朋友可以參考下2017-04-04