/**
* 构造代码块,会编译进所有的构造方法
* @author jack
* 构造代码块的注意事项:
* java编译器 .java源文件的时候,会把成员变量的声明语句放到类的最前面;
* 成员变量的初始化操作都是在构造方法中完成的;
* 编译操作后,构造代码块的代码与成员变量的显式初始化代码会被移动到构造方法中执行;
* 构造代码块代码与成员变量的显式初始化按源文件的顺序执行;
* 构造方法中的代码是最后执行的;
*/
public class Day1 {
// 成员变量显式初始化;
int i = 1;
// 构造代码块初始化成员变量
{
i = 2;
}
// 构造方法初始化成员变量
public Day1() {
i = 3;
}
public static void main(String[] args) {
Day1 d = new Day1();
System.out.println("i="+d.i);
}
}gou
输出: i=3
public class Day1 {
// 成员变量显式初始化;
int i = 1;
// 构造代码块初始化成员变量
{
i = 2;
}
// 构造方法初始化成员变量
public Day1() {
// i = 3;
}
public static void main(String[] args) {
Day1 d = new Day1();
System.out.println("i="+d.i);
}
}
输出:i=2
public class Day1 {
// 构造代码块初始化成员变量
{
i = 2;
}
// 构造方法初始化成员变量
public Day1() {
// i = 3;
}
// 成员变量显式初始化;
int i = 1;
public static void main(String[] args) {
Day1 d = new Day1();
System.out.println("i="+d.i);
}
}
输出:i=1