static關鍵字能修飾什麼
阿新 • • 發佈:2019-02-06
static關鍵字是Java中常用的關鍵字之一,可能最常用的就是修飾變數和方法了,但是僅僅知道這些還遠遠不夠。問題雖然很小,但是卻反映了對Java的瞭解程度。
static修飾變數和方法
- static可以修飾變數,這個變數屬於類本身,不需要建立例項就可以直接獲取到值。
- static可以修飾方法,這個方法屬於類本身,同樣,不要建立例項就可以通過類呼叫。
需要了解的是,static修飾的變數或方法屬於類的靜態資源,是所有例項共享的,另外靜態方法內部是不能訪問非靜態方法的,因為靜態資源是在類載入的時候就建立好的,而類載入時非靜態方法需要類new的時候才能建立,一前一後的順序所以導致了Java靜態方法不能訪問非靜態資源的結果,當然反之肯定是可以的了。
static修飾程式碼塊
static修飾的程式碼塊是靜態程式碼塊,也具有靜態的特點,屬於類本身,在載入時只需要載入一次,也就是說,如果載入過這個程式碼塊,就不會再載入了。
static修飾類
static修飾類只有一種情況,那就是這個類屬於靜態內部類,接觸過Android開發的話可能遇見過很多這樣的靜態內部類,如WindowManager.LayoutParams類,LayoutParams就是WindowManager類下的靜態內部類,它的原始碼如下所示:
public interface WindowManager extends ViewManager {
public static class LayoutParams extends ViewGroup.LayoutParams implements Parcelable {
//內部實現
}
}
import static
這個算是比較冷門的,但是知識不怕多,import static是JDK1.5之後的新特性,這兩個關鍵字連用可以指定匯入某個類中的指定靜態資源。
import static java.lang.Math.*;
2
3 public class A
4 {
5 public static void main(String[] args)
6 {
7 System.out.println(sin(2.2));
8 }
9 }
不需要再加Math.sin()的Math了,還是很方便的,但是可讀性不高,不建議這樣寫。