JAVA關於靜態static的面試題
1.靜態(static)html
static表示「全局」或者「靜態」的意思,用來修飾成員變量和成員方法,也能夠造成靜態static代碼塊。面試
static修飾的變量習慣稱爲靜態變量,static修飾的方法稱爲靜態方法,static修飾的代碼塊叫作靜態代碼塊。ide
static的意義在於方便在沒有建立對象的狀況下來進行調用(方法/變量)。this
「static方法就是沒有this的方法。在static方法內部不能調用非靜態方法,反過來是能夠的。並且能夠在沒有建立任何對象的前提下,僅僅經過類自己來調用static方法。這實際上正是static方法的主要用途。」url
2.靜態的具體用法spa
參考:.net
https://www.cnblogs.com/0mbiubiu/p/5331390.htmlhtm
補充:靜態內部類對象
https://blog.csdn.net/cd18333612683/article/details/79129503blog
https://baijiahao.baidu.com/s?id=1593244425455663032&wfr=spider&for=pc
3.靜態的注意事項
4.靜態的優缺點
優勢:
對對象的共享數據提供單獨空間的存儲,節省空間,沒有必要每個對象都存儲一份
能夠直接被類名調用,不用在堆內存建立對象
靜態成員能夠經過類名直接訪問,相對建立對象訪問成員方便
弊端:
訪問出現侷限性。(靜態雖好,但只能訪問靜態)
5.關於靜態的面試題
(1)Q:抽象的(abstract)方法是否可同時是靜態的(static)?
A:抽象方法未來是要被重寫的,而靜態方法是不能重寫的,因此這個是錯誤的。
(2)Q:是否能夠從一個靜態(static)方法內部發出對非靜態方法的調用?
A:不能夠,靜態方法只能訪問靜態成員,非靜態方法的調用要先建立對象。
(3) Q:static 能否用來修飾局部變量?
A:static 不容許用來修飾局部變量
(4)Q:內部類與靜態內部類的區別?
A:靜態內部類相對與外部類是獨立存在的,在靜態內部類中沒法直接訪問外部類中變量、方法。若是要訪問的話,必需要new一個外部類的對象,使用new出來的對象來訪問。可是能夠直接訪問靜態的變量、調用靜態的方法;
普通內部類做爲外部類一個成員而存在,在普通內部類中能夠直接訪問外部類屬性,調用外部類的方法。
若是外部類要訪問內部類的屬性或者調用內部類的方法,必需要建立一個內部類的對象,使用該對象訪問屬性或者調用方法。
若是其餘的類要訪問普通內部類的屬性或者調用普通內部類的方法,必需要在外部類中建立一個普通內部類的對象做爲一個屬性,外同類能夠經過該屬性調用普通內部類的方法或者訪問普通內部類的屬性
若是其餘的類要訪問靜態內部類的屬性或者調用靜態內部類的方法,直接建立一個靜態內部類對象便可。
(5)Q:Java中是否能夠覆蓋(override) 一個private或者是static的方法?
A:Java中static方法不能被覆蓋,由於方法覆蓋是基於運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,因此概念上不適用。