【发布时间】:2019-03-10 03:56:45
【问题描述】:
我了解块定义了变量的范围。方法内的空块用于设置范围。但是为什么方法内部的空块初始化变量以及与循环等使用的块不同。
class A{
public static void main(String args[]){
int a;
int b:
{
a = 10;
}
for(int i = 0; i < 1; i++){
b = 20;
}
System.out.println(b); //error here
System.out.println(a);
// doesnt give error and prints 10. why?
}
}
我的问题是:为什么方法中空块的属性与循环或条件块等使用的块不同
【问题讨论】:
-
没有循环或条件的非空块可以很容易地确定为始终执行。虽然您可以看到您的
for循环必须至少运行一次,但 JLS 中没有描述如何确定这一点。 -
@JamieSnipesThankyou..但我的问题不是关于静态初始化块。我对任何类型的方法中空块的属性感到困惑。我现在明白了。
标签: java core object-initializers empty-list