1. 程式人生 > >static關鍵字能修飾什麼

static關鍵字能修飾什麼

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了,還是很方便的,但是可讀性不高,不建議這樣寫。