<分区>
我在 Java 中运行以下代码:
1) 第一个代码:
public class Basic {
static int a=10;
static
{
a=20;
}
public static void main(String args[])
{
System.out.println("Value of Static variable : "+Basic.a);
}
}
输出是:静态变量的值:20
2) 第二个代码:
public class Basic {
static
{
a=20;
}
static int a=10;
public static void main(String args[])
{
System.out.println("Value of Static variable : "+Basic.a);
}
}
输出是:静态变量的值:10
问题:当 JVM 在 main 方法之前运行静态 block 时,我没有得到,为什么我在第二个代码中有不同的输出。 在第一个代码中,静态 block 将在 main 方法之前运行,然后它将 a 的值重新分配给 20 ,但是在第二个代码块中,我在 block 之前初始化变量 'a' 并且变量 'a' 应该有 vaule 20 时运行程序,但它的值为 10,为什么?