构造方法,初始化块和静态初始化块
开始学习java,对于构造方法,初始化块和静态初始化块感觉比较迷茫,所以做出一些简单的总结
初始化块:构造器的补充,初始化块不能接受任何参数,定义一些所有对象共有属性方法时可以使用初始化块进行初始化。
“里面的代码在创建Java对象时执行,而且在构造器之前执行!”,每个对象生成时都会被执行一次
例如:
-
{ -
System.out.println("通过初始化块初始化sex"); -
sex = "男"; -
} -
静态初始化块: 使用static定义,当类装载到系统时执行一次,若在静态出是坏块中想初始化变量,只能初始化静态变量
例如:
-
static { -
System.out.println("通过静态初始化块初始化age"); -
age = 20;//age是静态变量,请看后面的全部代码 -
} -
-
public HelloWorld () { -
System.out.println("通过构造方法初始化name"); -
name = "tom"; -
}
代码:
-
public class HelloWorld { -
-
String name; // 声明变量name -
String sex; // 声明变量sex -
static int age;// 声明静态变量age -
-
// 构造方法 -
public HelloWorld () { -
System.out.println("通过构造方法初始化name"); -
name = "tom"; -
} -
-
// 初始化块 -
{ -
System.out.println("通过初始化块初始化sex"); -
sex = "男"; -
} -
-
// 静态初始化块 -
static { -
System.out.println("通过静态初始化块初始化age"); -
age = 20; -
} -
-
public void show() { -
System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age); -
} -
-
public static void main(String[] args) { -
-
// 创建对象 -
HelloWorld hello = new HelloWorld(); -
// 调用对象的show方法 -
hello.show(); -
-
} -
}
从图我们可以看出:
优先级顺序,静态初始化块>初始化块>构造方法