隨筆-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 閱讀(282) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 金川县| 当雄县| 大足县| 赞皇县| 红桥区| 武宣县| 镇赉县| 赤峰市| 澄迈县| 荔波县| 太保市| 柏乡县| 东海县| 平阳县| 元阳县| 朝阳区| 两当县| 子洲县| 合山市| 梁平县| 明溪县| 闸北区| 中宁县| 弥勒县| 宿松县| 军事| 炉霍县| 虹口区| 什邡市| 阜宁县| 陆良县| 林西县| 肥城市| 元朗区| 甘泉县| 克拉玛依市| 河曲县| 胶州市| 北流市| 桑植县| 梧州市|