少年阿賓

          那些青春的歲月

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          Static 靜態(tài):這里主要記錄的是靜態(tài)程序塊和靜態(tài)方法

          如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行,就需要使用靜態(tài)代碼塊,這種代碼是主動(dòng)執(zhí)行的;需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化但是不執(zhí)行,在不創(chuàng)建對(duì)象的情況下,可以供其他程序調(diào)用,而在調(diào)用的時(shí)候才執(zhí)行,這需要使用靜態(tài)方法,這種代碼是被動(dòng)執(zhí)行的. 靜態(tài)方法在類加載的時(shí)候 就已經(jīng)加載 可以用類名直接調(diào)用。

          靜態(tài)代碼塊和靜態(tài)方法的區(qū)別是:

          靜態(tài)代碼塊是自動(dòng)執(zhí)行的;

          靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的.

          靜態(tài)方法:如果我們?cè)诔绦蚓帉懙臅r(shí)候需要一個(gè)不實(shí)例化對(duì)象就可以調(diào)用的方法,我們就可以使用靜態(tài)方法,具體實(shí)現(xiàn)是在方法前面加上static,如下:

          public static void method(){}

          在使用靜態(tài)方法的時(shí)候需要注意一下幾個(gè)方面:

          在靜態(tài)方法里只能直接調(diào)用同類中其他的靜態(tài)成員(包括變量和方法),而不能直接訪問(wèn)類中的非靜態(tài)成員。這是因?yàn)椋瑢?duì)于非靜態(tài)的方法和變量,需要先創(chuàng)建類的實(shí)例對(duì)象后才可使用,而靜態(tài)方法在使用前不用創(chuàng)建任何對(duì)象。(備注:靜態(tài)變量是屬于整個(gè)類的變量而不是屬于某個(gè)對(duì)象的)

          靜態(tài)方法不能以任何方式引用this和super關(guān)鍵字,因?yàn)殪o態(tài)方法在使用前不用創(chuàng)建任何實(shí)例對(duì)象,當(dāng)靜態(tài)方法調(diào)用時(shí),this所引用的對(duì)象根本沒(méi)有產(chǎn)生。

          靜態(tài)程序塊:當(dāng)一個(gè)類需要在被載入時(shí)就執(zhí)行一段程序,這樣可以使用靜態(tài)程序塊。

          public class DemoClass {

          private DemoClass(){}

          public static DemoClass _instance;

          static{

          if(null == _instance ){

          _instance = new DemoClass();

          }

          }

          public static DemoClass getInstance(){

          return _instance;

          }

          }

          這樣的程序在類被加載的時(shí)候就執(zhí)行了static中的代碼。

          Ps:java中類的裝載步驟:

          在Java中,類裝載器把一個(gè)類裝入Java虛擬機(jī)中,要經(jīng)過(guò)三個(gè)步驟來(lái)完成:裝載、鏈接和初始化,其中鏈接又可以分成校驗(yàn)、準(zhǔn)備和解析三步,除了解析外,其它步驟是嚴(yán)格按照順序完成的,各個(gè)步驟的主要工作如下:

          所謂裝載就是尋找一個(gè)類或是一個(gè)接口的二進(jìn)制形式并用該二進(jìn)制形式來(lái)構(gòu)造代表這個(gè)類或是這個(gè)接口的class對(duì)象的過(guò)程。其中類或接口的名稱是給定了的。

          裝載:查找和導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù);

          鏈接:執(zhí)行下面的校驗(yàn)、準(zhǔn)備和解析步驟,其中解析步驟是可以選擇的;

          校驗(yàn):檢查導(dǎo)入類或接口的二進(jìn)制數(shù)據(jù)的正確性;

          準(zhǔn)備:給類的靜態(tài)變量分配并初始化存儲(chǔ)空間;

          解析:將符號(hào)引用轉(zhuǎn)成直接引用;

          初始化:激活類的靜態(tài)變量的初始化Java代碼和靜態(tài)Java代碼塊

          posted on 2015-03-25 15:24 abin 閱讀(335) 評(píng)論(0)  編輯  收藏 所屬分類: JavaBasic
          主站蜘蛛池模板: 临猗县| 祁门县| 新晃| 龙井市| 清河县| 武汉市| 太和县| 商丘市| 桂平市| 石门县| 梅州市| 井冈山市| 台山市| 巴东县| 吴川市| 无为县| 微山县| 库尔勒市| 阿勒泰市| 台北县| 墨玉县| 湖南省| 屯留县| 衡东县| 和政县| 永顺县| 石河子市| 福清市| 汝南县| 云南省| 额敏县| 南康市| 铜梁县| 清苑县| 登封市| 淄博市| 枞阳县| 武清区| 南陵县| 土默特右旗| 井研县|