最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的static靜態(tài)代碼塊的使用詳解

 更新時(shí)間:2013年04月25日 15:28:01   作者:  
本篇文章介紹了,Java中的static靜態(tài)代碼塊的使用詳解。需要的朋友參考下

一.與靜態(tài)方法的比較  

  一般情況下,如果有些代碼必須在項(xiàng)目啟動(dòng)的時(shí)候就執(zhí)行的時(shí)候,需要使用靜態(tài)代碼塊,這種代碼是主動(dòng)執(zhí)行的;需要在項(xiàng)目啟動(dòng)的時(shí)候就初始化,在不創(chuàng)建對(duì)象的情況下,其他程序來(lái)調(diào)用的時(shí)候,需要使用靜態(tài)方法,靜態(tài)方法在類(lèi)加載的時(shí)候 就已經(jīng)加載 可以用類(lèi)名直接調(diào)用 比如main方法就必須是靜態(tài)的 這是程序入口。兩者的區(qū)別就是:靜態(tài)代碼塊是自動(dòng)執(zhí)行的; 靜態(tài)方法是被調(diào)用的時(shí)候才執(zhí)行的。


二.靜態(tài)方法注意事項(xiàng)  

  使用類(lèi)的靜態(tài)方法時(shí),注意:

    a.在靜態(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ì)象。

    b.靜態(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)生(this關(guān)鍵字只能在方法內(nèi)部使用,表示對(duì)“調(diào)用方法的那

個(gè)對(duì)象”的引用)。

  靜態(tài)變量是屬于整個(gè)類(lèi)的變量而不是屬于某個(gè)對(duì)象的。注意不能把任何方法體內(nèi)的變量聲明為靜態(tài),例如: fun() {    static int i=0;//非法。 }
 

三.程序舉例

復(fù)制代碼 代碼如下:

public class TestStaticCon {
     public static int a = 0;

     static {
         a = 10;
         System.out.println("父類(lèi)的靜態(tài)代碼塊在執(zhí)行a=" + a);
     }

     {
         a = 8;
         System.out.println("父類(lèi)的非靜態(tài)代碼塊在執(zhí)行a=" + a);
     }

     public TestStaticCon() {
         this("a在父類(lèi)帶參構(gòu)造方法中的值:" + TestStaticCon.a); // 調(diào)用另外一個(gè)構(gòu)造方法
         System.out.println(a);
         System.out.println("父類(lèi)無(wú)參構(gòu)造方法在執(zhí)行a=" + a);
     }

     public TestStaticCon(String n) {
         System.out.println(n);
         System.out.println(a);

     }

     public static void main(String[] args) {
         TestStaticCon tsc = null;
         System.out.println("!!!!!!!!!!!!!!!!!!!!!");
         tsc = new TestStaticCon();
     }
 }

復(fù)制代碼 代碼如下:

運(yùn)行結(jié)果:
父類(lèi)的靜態(tài)代碼塊在執(zhí)行a=10
!!!!!!!!!!!!!!!!!!!!!
父類(lèi)的非靜態(tài)代碼塊在執(zhí)行a=8
a在父類(lèi)帶參構(gòu)造方法中的值:10
8
8
父類(lèi)無(wú)參構(gòu)造方法在執(zhí)行a=8

四.網(wǎng)友提供
復(fù)制代碼 代碼如下:

public class StaticBlock {

     static {
         System.out.println("靜態(tài)塊");
     }
     {
         System.out.println("構(gòu)造塊,在類(lèi)中定義");
     }

     public StaticBlock() {
         System.out.println("構(gòu)造方法執(zhí)行");
     }

     public static void main(String[] args) {
         new StaticBlock();
         new StaticBlock();
     }

 }

復(fù)制代碼 代碼如下:

靜態(tài)塊
構(gòu)造塊,在類(lèi)中定義
構(gòu)造方法執(zhí)行
構(gòu)造塊,在類(lèi)中定義
構(gòu)造方法執(zhí)行

  結(jié)論:靜態(tài)代碼塊是在類(lèi)加載時(shí)自動(dòng)執(zhí)行的,非靜態(tài)代碼塊是在創(chuàng)建對(duì)象時(shí)自動(dòng)執(zhí)行的代碼,不創(chuàng)建對(duì)象不執(zhí)行該類(lèi)的非靜態(tài)代碼塊。且執(zhí)行順序?yàn)殪o態(tài)代碼塊------非靜態(tài)代碼塊----構(gòu)造函數(shù)。

  其中讓我疑惑的是“a在父類(lèi)帶參構(gòu)造方法中的值:10”,我再想那時(shí)候?yàn)槭裁床皇?,debug了(F11,不能直接設(shè)置斷點(diǎn)然后運(yùn)行,那樣和直接運(yùn)行沒(méi)區(qū)別),發(fā)現(xiàn)先進(jìn)入了無(wú)參的構(gòu)造方法,執(zhí)行了第一條語(yǔ)句并且切換到了另一個(gè)構(gòu)造方法(不管是不是反正第一句都要執(zhí)行,此時(shí)a還是10,非靜態(tài)代碼塊還未執(zhí)行),提示找不到源,不管是不是這條語(yǔ)句都提示了這個(gè)警告(不算錯(cuò)誤,因?yàn)槌绦蚶^續(xù)正常運(yùn)行),然后運(yùn)行了非靜態(tài)代碼塊,繼而從有參的構(gòu)造方法處繼續(xù)執(zhí)行……

相關(guān)文章

  • java中Swing會(huì)奔跑的線程俠

    java中Swing會(huì)奔跑的線程俠

    本文通過(guò)代碼示例給大家詳細(xì)講解了java中Swing會(huì)奔跑的線程俠這個(gè)經(jīng)典的示例,有興趣的朋友學(xué)習(xí)下。
    2018-03-03
  • SpringBoot項(xiàng)目啟動(dòng)時(shí)提示程序包不存在和找不到符號(hào)的處理方法

    SpringBoot項(xiàng)目啟動(dòng)時(shí)提示程序包不存在和找不到符號(hào)的處理方法

    最近接手同事開(kāi)發(fā)的一個(gè)Springboot工作項(xiàng)目,從svn上整體拉取下來(lái)后,構(gòu)建完成后,啟動(dòng)的時(shí)候遇到了程序包找不到的情況,所以本文記錄了SpringBoot項(xiàng)目啟動(dòng)時(shí)提示程序包不存在和找不到符號(hào)的處理方法,需要的朋友可以參考下
    2024-05-05
  • java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換

    java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換

    本文主要介紹了java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系

    Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系

    這篇文章主要為大家詳細(xì)介紹了Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java日期操作類(lèi)常見(jiàn)用法示例

    Java日期操作類(lèi)常見(jiàn)用法示例

    這篇文章主要介紹了Java日期操作類(lèi)常見(jiàn)用法,結(jié)合實(shí)例形式分析了java針對(duì)日期時(shí)間的獲取、轉(zhuǎn)換常見(jiàn)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 關(guān)于SpringMVC在Controller層方法的參數(shù)解析詳解

    關(guān)于SpringMVC在Controller層方法的參數(shù)解析詳解

    在SpringMVC中,控制器Controller負(fù)責(zé)處理由DispatcherServlet分發(fā)的請(qǐng)求,下面這篇文章主要給大家介紹了關(guān)于SpringMVC在Controller層方法的參數(shù)解析的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Java接口DAO模式代碼原理及應(yīng)用詳解

    Java接口DAO模式代碼原理及應(yīng)用詳解

    這篇文章主要介紹了Java接口DAO模式代碼原理及應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java編程經(jīng)典小游戲設(shè)計(jì)-打磚塊小游戲源碼

    Java編程經(jīng)典小游戲設(shè)計(jì)-打磚塊小游戲源碼

    這篇文章主要介紹了Java編程經(jīng)典小游戲設(shè)計(jì)-打磚塊小游戲源碼,還是挺不錯(cuò)的,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java反射機(jī)制用法總結(jié)

    Java反射機(jī)制用法總結(jié)

    反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱(chēng)為java語(yǔ)言的反射機(jī)制。下面我們來(lái)一起學(xué)習(xí)一下吧
    2019-05-05
  • Spring Cloud Config 使用本地配置文件方式

    Spring Cloud Config 使用本地配置文件方式

    這篇文章主要介紹了Spring Cloud Config 使用本地配置文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論

宁蒗| 库伦旗| 栾川县| 九龙坡区| 巫溪县| 南部县| 南昌县| 白朗县| 百色市| 外汇| 伊川县| 关岭| 探索| 武义县| 象山县| 拉萨市| 米泉市| 穆棱市| 七台河市| 远安县| 望城县| 石门县| 莆田市| 永丰县| 武夷山市| 竹山县| 璧山县| 监利县| 铁岭县| 沁水县| 建宁县| 临汾市| 靖边县| 淮滨县| 垣曲县| 嘉黎县| 青州市| 佛教| 禹城市| 九龙城区| 嘉义市|