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

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

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

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

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


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

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

    a.在靜態(tài)方法里只能直接調用同類中其他的靜態(tài)成員(包括變量和方法),而不能直接訪問類中的非靜態(tài)成員。這是因為,對于非靜態(tài)的方法和變量,需要先創(chuàng)建類的實例對象后才可使用,而靜態(tài)方法在使用前

不用創(chuàng)建任何對象。

    b.靜態(tài)方法不能以任何方式引用this和super關鍵字,因為靜態(tài)方法在使用前不用創(chuàng)建任何實例對象,當靜態(tài)方法調用時,this所引用的對象根本沒有產(chǎn)生(this關鍵字只能在方法內部使用,表示對“調用方法的那

個對象”的引用)。

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

三.程序舉例

復制代碼 代碼如下:

public class TestStaticCon {
     public static int a = 0;

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

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

     public TestStaticCon() {
         this("a在父類帶參構造方法中的值:" + TestStaticCon.a); // 調用另外一個構造方法
         System.out.println(a);
         System.out.println("父類無參構造方法在執(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();
     }
 }

復制代碼 代碼如下:

運行結果:
父類的靜態(tài)代碼塊在執(zhí)行a=10
!!!!!!!!!!!!!!!!!!!!!
父類的非靜態(tài)代碼塊在執(zhí)行a=8
a在父類帶參構造方法中的值:10
8
8
父類無參構造方法在執(zhí)行a=8

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

public class StaticBlock {

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

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

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

 }

復制代碼 代碼如下:

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

  結論:靜態(tài)代碼塊是在類加載時自動執(zhí)行的,非靜態(tài)代碼塊是在創(chuàng)建對象時自動執(zhí)行的代碼,不創(chuàng)建對象不執(zhí)行該類的非靜態(tài)代碼塊。且執(zhí)行順序為靜態(tài)代碼塊------非靜態(tài)代碼塊----構造函數(shù)。

  其中讓我疑惑的是“a在父類帶參構造方法中的值:10”,我再想那時候為什么不是8,debug了(F11,不能直接設置斷點然后運行,那樣和直接運行沒區(qū)別),發(fā)現(xiàn)先進入了無參的構造方法,執(zhí)行了第一條語句并且切換到了另一個構造方法(不管是不是反正第一句都要執(zhí)行,此時a還是10,非靜態(tài)代碼塊還未執(zhí)行),提示找不到源,不管是不是這條語句都提示了這個警告(不算錯誤,因為程序繼續(xù)正常運行),然后運行了非靜態(tài)代碼塊,繼而從有參的構造方法處繼續(xù)執(zhí)行……

相關文章

  • java中Swing會奔跑的線程俠

    java中Swing會奔跑的線程俠

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

    SpringBoot項目啟動時提示程序包不存在和找不到符號的處理方法

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

    java中URLencode、URLdecode及Base64加解密轉換

    本文主要介紹了java中URLencode、URLdecode及Base64加解密轉換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • Java Swing窗體關閉事件的調用關系

    Java Swing窗體關閉事件的調用關系

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

    Java日期操作類常見用法示例

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

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

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

    Java接口DAO模式代碼原理及應用詳解

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

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

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

    Java反射機制用法總結

    反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調用對象的方法的功能稱為java語言的反射機制。下面我們來一起學習一下吧
    2019-05-05
  • Spring Cloud Config 使用本地配置文件方式

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

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

最新評論

水城县| 临桂县| 大埔区| 略阳县| 馆陶县| 博湖县| 元阳县| 吴桥县| 宽甸| 萝北县| 辛集市| 虎林市| 陆川县| 都兰县| 鸡西市| 绥化市| 东阿县| 神池县| 寻甸| 广昌县| 宜丰县| 恩平市| 张掖市| 辽阳市| 连南| 山西省| 贡嘎县| 陆河县| 固原市| 蒙城县| 兴和县| 蒲江县| 杭锦后旗| 棋牌| 德州市| 昭通市| 白山市| 宁乡县| 丽水市| 湘潭市| 开平市|