练习(13):验证前面段落中的语句。
public class test5_7_13 {
public static void main(String[] args){
System.out.println("inside main()");
// Cups.cup1.f(99);
}
static Cups cups1 = new Cups();
static Cups cups2 = new Cups();
/**
* 输出结果
* Cup (1)
Cup (2)
Cups()
Cups()
inside main()
说明:1,无论new多少个对象,静态初始化只进行一次
2,先于main运行
*/
}
class Cup{
Cup(int marker){
System.out.println("Cup (" + marker + ")");
}
void f(int marker){
System.out.println("Cup (" + marker + ")");
}
}
class Cups{
static Cup cup1;
static Cup cup2;
static {
cup1 = new Cup(1);
cup2 = new Cup(2);
}
Cups(){
System.out.println("Cups()");
}
}
练习(14):编写一个类,拥有两个静态字符串域,其中一个在定义处初始化,另一个在静态块中初始化。现在,加入一个静态方法用以打印两个字段值。请证明它们都会在被使用之前完成初始化动作。
public class test5_7_14 {
public static void main(String[] args){
staticTest test = new staticTest(99);
test.f(100);
/**
* 输出结果:
* 1
* 99
* 100
* 说明确实是在被使用前完成初始化
*/
}
}
class staticTest{
static int num;
static {
String name = "1";
System.out.println(name);
}
staticTest(int num){
this.num = num;
System.out.println(num);
}
void f(int num){
this.num = num;
System.out.println(num);
}
}