隨筆-208  評論-469  文章-30  trackbacks-0

          static修飾符可以用來修飾類的成員變量、成員方法和代碼塊。
          用static修飾的成員變量表示靜態變量,可以直接通過類名來訪問;
          用static修飾的成員方法表示靜態方法,可以直接通過類名來訪問;
          用static修飾的程序代碼塊表示靜態代碼塊,當Java虛擬機加載類時,就會執行該代碼塊。
          static變量
          ???
          ??? (1)靜態變量與實例變量的區別:
          靜態變量在內存中只有一個拷貝,運行時Java虛擬機只為靜態變量分配一次內存,在加載類的過程中完成靜態類變量的內存分配。可以直接通過類名訪問靜態變量;
          對于實例變量,每創建一個實例,就會為實例變量分配一次內存,實例變量可以在內存中有多個拷貝,互不影響。
          ??? (2)static變量,提供了全局變量的功能:
          能被類的所有實例共享,可作為實例之間進行交流的共享數據;
          如果類的所有實例都包含一個相同的常量屬性,可以把這個屬性定義為靜態常量類型,從而節省內存空間。
          static方法

          ??? (1)靜態方法可訪問的內容

          ??? 靜態方法不需要實例化就可以被調用,因此在靜態方法中不能使用this, super關鍵字,也不能直接訪問所屬類的實例變量和實例方法,但是可以直接訪問所屬類的靜態變量和靜態方法。

          ??? (2)實例方法可訪問的內容

          ??? 在實例方法中可以直接訪問所屬類的靜態變量、靜態方法、實例變量和實例方法。

          ??? (3)靜態方法必須被實現

          ??? (4)作為程序入口的main()方法是靜態方法
          ???
          ??? main()方法必須用static修飾,這是因為把main()定義為靜態方法,可以使得Java虛擬機只要加載了main()方法所屬的類,就能執行main()方法,而無須先創建這個類的實例。
          ??? 在main()靜態方法也是不能直接訪問實例變量和實例方法的。

          ??? (5)方法的字節碼都位于方法區
          ???
          ??? 不管實例方法,還是靜態方法,它們的字節碼都位于方法區內。

          static代碼塊

          ??? 類中可以包含靜態代碼塊,它不存在任何方法體中。在Java虛擬機加載類時會執行這些靜態代碼塊,每個靜態代碼塊只會被執行一次。
          ??? Tips:
          Java虛擬機加載靜態代碼塊后,再執行main()方法;
          類的構造方法用于初始化類的實例,而類的靜態代碼塊則可用于初始化類,給類的靜態變量賦初始化值。
          靜態代碼塊與靜態方法一樣,也不能直接訪問類的實例變量和實例方法,而必須通過實例的引用來訪問它們。

          posted on 2006-11-29 00:44 EricWong 閱讀(270) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 广宁县| 钦州市| 德江县| 永兴县| 沂源县| 什邡市| 衡山县| 兴业县| 宁波市| 华安县| 新宾| 克拉玛依市| 温泉县| 大关县| 修武县| 英吉沙县| 慈利县| 灵台县| 尉犁县| 石首市| 靖远县| 宁津县| 剑阁县| 禄劝| 九台市| 孝感市| 万载县| 旅游| 宁安市| 汝南县| 鲁山县| 那坡县| 丹寨县| 玉林市| 正安县| 宜昌市| 昆山市| 扎赉特旗| 深水埗区| 墨竹工卡县| 布拖县|