Static语句块和初始语句块的使用---2015年10月恒生电子笔试试卷


package lhm.test;

/**
* @author lenovo
*
*/
public class Person {

private int id;
private static int total = 0;
/**
*
*/
public Person() {
// TODO Auto-generated constructor stub
System.out.println("person构造方法");
total++;
id = total;
}

static{
System.out.println("这是Person的static语句块");
}
{
System.out.println("这是Person的初始语句块");
}
public int getId(){
return id;
}
}

/**
*
*/
package lhm.test;

/**
* @author lenovo
*
*/
public class TestStatic extends Person{

/**
*
*/
public TestStatic() {
// TODO Auto-generated constructor stub
System.out.println("Teststatic的构造方法");
}
{
System.out.println("这是TestStatic的初始语句块");
}
static{
System.out.println("这是TestStatic的static语句块");
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestStatic ts = new TestStatic();

//Person p = new Person();
//Person p1 = new Person();
//System.out.println(p.getId());
//System.out.println(p1.getId());
}

}

最后结果为:

这是Person的static语句块
这是TestStatic的static语句块
这是Person的初始语句块
person构造方法
这是TestStatic的初始语句块
Teststatic的构造方法

static语句最先执行,执行时机是:该类所有static属性已被分配空间,默认初始化和显示初始化之后,在执行任何代码之前。

初始语句是在执行其他方法体之前,在对象分配空间及实例变量默认和显示初始化之后。

原文地址:https://www.cnblogs.com/lihaiming93/p/4889517.html