我的Java路上那些事兒

          快樂(lè)成長(zhǎng)
          posts - 110, comments - 101, trackbacks - 0, articles - 7
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2016年7月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          搜索

          •  

          最新評(píng)論

          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)方法在類(lèi)加載的時(shí)候 就已經(jīng)加載 可以用類(lèi)名直接調(diào)用。

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


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

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

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

          public static void method(){}

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

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

          }

          }

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

          Ps:java中類(lèi)的裝載步驟:

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

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

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

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

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

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

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

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

          本篇文章來(lái)源于 Linux公社網(wǎng)站(www.linuxidc.com)  原文鏈接:http://www.linuxidc.com/Linux/2010-03/24783.htm


          評(píng)論

          # re: java static塊和static 方法 的使用區(qū)別  回復(fù)  更多評(píng)論   

          2016-07-20 19:49 by zhangsan
          sss

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 房产| 且末县| 集贤县| 苍南县| 孟州市| 石景山区| 巫溪县| 滦平县| 西宁市| 康平县| 彭泽县| 雷山县| 宕昌县| 年辖:市辖区| 台湾省| 丹凤县| 巨野县| 湘乡市| 嘉荫县| 山西省| 天祝| 化州市| 南充市| 临泉县| 安国市| 鄱阳县| 阿城市| 麻江县| 垦利县| 九龙城区| 乐业县| 乌兰察布市| 临邑县| 宜兴市| 邛崃市| 嘉义市| 闻喜县| 章丘市| 奉节县| 鹤山市| 博白县|