为什么此代码打印 11
而不是 10
。显然,静态初始化 block 中的i++
被执行了。
但是,为什么非静态 block 中的i--
没有被执行。
这里发生了什么?
class ClassOne
{
static int i = 10;
{
i--;
}
}
public class Main extends ClassOne
{
static
{
i++;
}
public static void main(String[] args)
{
System.out.println(i);
}
}
最佳答案
非静态初始化 block 将在实例创建时调用。
您永远不会创建新实例,因此该 block 不会被执行。
关于java - Java 中的静态和非静态初始化 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57944193/