我们这里所说的是成员变量,包括静态和非静态的。
1、首先初始化静态变量,静态代码块和静态变量不分先后,按逻辑顺序初始化。并且只初始化一次,只占用一块内存区域。
2、其次初始化成员变量,有两种写法一种普通,还有一种想静态代码块一样,也只按逻辑顺序初始化。
3、最后才调用构造方法(构造方法默认是static的)。
证明代码如下:
public class House {
String l;
{
l="lisi";
System.out.println(l);
}
static{
System.out.println("static area 1");
}
static Window w5 = new Window(5);
Window w1 = new Window(1);
House() {
System.out.println("house()");
w3 = new Window(33);
}
Window w2 = new Window(2);
void f(){
System.out.println("f()");
}
Window w3 = new Window(3);
static{
System.out.println("static area 2");
}
public static void main(String[] args) {
House h = new House();
}
String s;
{
s="zhangsan";
System.out.println(s);
}
Window w4;
{
w4 = new Window(44);
}
}
class Window{
Window(int i){
System.out.println("window "+ i);
}
static{
System.out.println("window's static area");
}
}
输出结果为:
static area 1
window's static area
window 5
static area 2
lisi
window 1
window 2
window 3
zhangsan
window 44
house()
window 33
代码参照java编程思想