我只在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中,双重或三重等初始化是什么意思?
这不是双括号初始化。这是一个块语句。来自qazxsw poi:
块是平衡括号之间的一组零个或多个语句,可以在允许单个语句的任何位置使用。
块语句将其中的语句包含在不同的范围内。所以,如果你这样做:
docs
public static int foo() {
{
int foo = 0;
}
return foo;
}
不在foo
线的范围内,你会得到一个错误
在您的代码中,这些嵌套块没有区别,因为您只是打印,但每个块将具有不同的范围