第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

靜態(tài)初始化塊

靜態(tài)初始化塊

慕哥6287543 2019-06-17 16:57:28
靜態(tài)初始化塊據(jù)我所知,“靜態(tài)初始化塊”用于在一行中設置靜態(tài)字段的值。但是我不明白為什么我們需要一個特殊的障礙來解決這個問題。例如,我們將一個字段聲明為靜態(tài)字段(沒有值賦值)。然后編寫代碼中的幾行代碼,生成并為上述聲明的靜態(tài)字段賦值。為什么我們需要在一個特殊的塊中使用這一行,比如:static {...}?
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

這個非靜態(tài)塊:

{
    // Do Something...}

獲取調用每次構造類的一個實例。這個靜態(tài)塊只會被調用一次,當類本身被初始化時,不管您創(chuàng)建了多少個該類型的對象。

例子:

public class Test {

    static{
        System.out.println("Static");
    }

    {
        System.out.println("Non-static block");
    }

    public static void main(String[] args) {
        Test t = new Test();
        Test t2 = new Test();
    }}

這些指紋:

StaticNon-static blockNon-static block


查看完整回答
反對 回復 2019-06-17
?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

如果它們不在靜態(tài)初始化塊中,那么它們會在哪里?您將如何聲明僅用于初始化目的本地變量,并將其與字段區(qū)分開來?例如,如何你,你們想寫:

public class Foo {
    private static final int widgets;

    static {
        int first = Widgets.getFirstCount();
        int second = Widgets.getSecondCount();
        // Imagine more complex logic here which really used first/second
        widgets = first + second;
    }}

如果firstsecond不是在街區(qū)里,它們看起來就像田野。如果他們在一個街區(qū)里static在它前面,這將被算作一個實例初始化塊,而不是一個靜態(tài)初始化塊,因此它將被執(zhí)行一次。構造實例,而不是總計一次。

現(xiàn)在,在這種特殊情況下,您可以使用靜態(tài)方法來代替:

public class Foo {
    private static final int widgets = getWidgets();

    static int getWidgets() {
        int first = Widgets.getFirstCount();
        int second = Widgets.getSecondCount();
        // Imagine more complex logic here which really used first/second
        return first + second;
    }}

..但是,如果您希望在同一個塊中分配多個變量,或者沒有變量(例如,如果您只想記錄某項內容-或者可能初始化一個本機庫),這是行不通的。


查看完整回答
反對 回復 2019-06-17
?
小唯快跑啊

TA貢獻1863條經(jīng)驗 獲得超2個贊

下面是一個例子:

  private static final HashMap<String, String> MAP = new HashMap<String, String>();
  static {
    MAP.put("banana", "honey");
    MAP.put("peanut butter", "jelly");
    MAP.put("rice", "beans");
  }

“靜態(tài)”部分中的代碼將在類加載時、類的任何實例被構造之前(以及在從其他地方調用任何靜態(tài)方法之前)執(zhí)行。這樣,您就可以確保類資源都可以使用了。

也有可能有非靜態(tài)初始化塊。它們類似于為類定義的構造函數(shù)方法集的擴展。它們看起來就像靜態(tài)初始化程序塊,除非關鍵字“靜態(tài)”被關閉。


查看完整回答
反對 回復 2019-06-17
  • 3 回答
  • 0 關注
  • 473 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號