Joo*_*oop -1 java static runtime
我正在读一本关于Java的书.它给出了一个这样的例子:
class UseStatic {
static int a = 3;
static int b;
// ... some more lines
static {
b = 4 * a;
}
}
Run Code Online (Sandbox Code Playgroud)
然后它解释了这个:
一旦
UseStatic类被加载,所有的static语句运行.首先,a设置为3,然后静态块执行,...,然后初始化b为a*4或12.
我想知道这里的线路是如何实现的.它如何能第一,从顶部开始的static int a = 3以才跳过static int b来static {..},只再跳回静态INT B' 它如何知道这种依赖?
它没有"跳过static int b",也没有"跳回去static int b".没有什么可以"跳回" ,因为static int b它只是一个声明,而不是初始化/分配.它声明变量但不为其赋值.
首先a声明并初始化.然后b宣布.然后static执行块,为其分配值b.
Java语言规范规定了所有这些事情的确切顺序.请参阅Jon Skeet的回答在JLS中是否有关于执行静态初始化块的顺序的保证?更多.
| 归档时间: |
|
| 查看次数: |
34 次 |
| 最近记录: |