麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

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

2019-11-26 16:10:32
字體:
供稿:網(wǎng)友

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

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


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

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

    a.在靜態(tài)方法里只能直接調(diào)用同類中其他的靜態(tài)成員(包括變量和方法),而不能直接訪問類中的非靜態(tài)成員。這是因?yàn)椋瑢?duì)于非靜態(tài)的方法和變量,需要先創(chuàng)建類的實(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ì)象根本沒有產(chǎn)生(this關(guān)鍵字只能在方法內(nèi)部使用,表示對(duì)“調(diào)用方法的那

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

  靜態(tài)變量是屬于整個(gè)類的變量而不是屬于某個(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("父類的靜態(tài)代碼塊在執(zhí)行a=" + a);
     }

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

     public TestStaticCon() {
         this("a在父類帶參構(gòu)造方法中的值:" + TestStaticCon.a); // 調(diào)用另外一個(gè)構(gòu)造方法
         System.out.println(a);
         System.out.println("父類無參構(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é)果:
父類的靜態(tài)代碼塊在執(zhí)行a=10
!!!!!!!!!!!!!!!!!!!!!
父類的非靜態(tài)代碼塊在執(zhí)行a=8
a在父類帶參構(gòu)造方法中的值:10
8
8
父類無參構(gòu)造方法在執(zhí)行a=8

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

public class StaticBlock {

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

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

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

 }

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

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鲁人人人鲁人人鲁精品 | 可以看逼的视频 | 日日草夜夜操 | 免费看真人a一级毛片 | 欧美日韩亚洲国产 | a黄色网 | 国产精品中文在线 | 国产午夜精品在线 | 黄色片网站在线免费观看 | 激情视频导航 | 激情黄页 | 依依成人精品视频 | 97视频一二区 | 国产亚色 | 91九色电影 | 日本在线免费观看视频 | 一区二区三区四区视频在线观看 | 毛片免费观看视频 | 国产一区二区精品免费 | 欧美成人一区二区视频 | 毛片在哪里看 | 羞羞视频一区 | 中文字幕电影免费播放 | 2023av在线视频| 久久久久免费精品国产小说色大师 | 媚药按摩痉挛w中文字幕 | 国产黄色毛片 | 欧美精品18videos性欧美 | 成人黄色短视频在线观看 | 在线中文字幕亚洲 | 天堂在线资源av | 亚洲精品在线观看网站 | 久久久成人精品视频 | 久久久久久久久久综合 | 国产69精品久久久久99尤 | 亚洲成人免费影视 | 91色琪琪电影亚洲精品久久 | 91成人免费| 色中色激情影院 | 一区二区免费网站 | 亚洲一级片免费观看 |