可能重复:
静态初始化阻止
异常的"静态"方法声明
我想在不久的将来为OCJPC做准备,我遇到了一个我从未见过的构造.由于谷歌编程结构很难,我在这里问这个问题.代码片段:
class Geryon {
static { System.out.print("a"); }
{ System.out.print("b"); }
Geryon(String s) { System.out.print(s); }
public static void main(String[] args) {
new Geryon("c");
}
}
Run Code Online (Sandbox Code Playgroud)
我指的是theGeryon()方法头中的2个print语句,我希望返回类型.至于我能够谷歌,静态方法标题包括:
access-modifier keyword-"static" return-type|void method-name
Run Code Online (Sandbox Code Playgroud)
从测验问题的答案来看,代码不仅可以编译,还可以运行.任何人都可以指导我这个解释的来源吗?
A是一个静态初始化程序,在类加载器初始化类时调用它,这个:
static { System.out.print("a"); }
Run Code Online (Sandbox Code Playgroud)
另一个(B)是一个匿名块,每次实例化时都会调用它:
{ System.out.print("b"); }
Run Code Online (Sandbox Code Playgroud)
哦,第三个打印语句C只是一个普通的构造函数调用.
如果你实例化了一个Geryon,你会获得所有三行,就像你发布的代码一样.但是下次你实例化一个Geryon时你只会得到两个--B和C; 因为它已经被类加载器初始化,所以不会调用静态块.
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |