簡體   English   中英

雙重初始化在Java方法中意味着什么

[英]What does double initialization mean in Java methods

我在java中僅對類ex使用了雙重初始化: new ArrayList(){{add()}}但是我最近錯誤地編寫了以下代碼,並且JVM並沒有因為我的錯誤而生氣。

public void test(){
    {
        {
            ....
        }
    }
}

之后,做了一個簡單的例子,看到了以下內容,但仍然不理解任何期望運行語句的順序。

public class HelloWorld{

     public static void main(String []args){
        HelloWorld hw=new HelloWorld();
        hw.test1();
        System.out.println("----------");
        hw.test2();
     }

    public void test1(){
        {
            {
                System.out.println("1");
            }
            System.out.println("2");
        }
        System.out.println("3");
    }

    public void test2(){
        System.out.println("a");
        {
            System.out.println("b");
            {
                System.out.println("c");
            }

        }

    }
}

結果:

1
2
3
----------
a
b
c

所以我的問題是,在Java中,兩次或三次等初始化意味着什么?

這不是雙括號初始化。 這是一個塊語句。 文檔

塊是平衡括號之間的零個或多個語句的組,可在允許單個語句的任何地方使用。

塊語句將語句包含在另一個范圍內。 因此,如果您這樣做:

public static int foo() {
    {
        int foo = 0;
    }
    return foo;
}

foo不在return foo;的行中return foo; 你會得到一個錯誤


在您的代碼中,這些嵌套塊沒有什么區別,就像您在打印一樣,但是每個塊都有不同的作用域

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM