java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值。与其相关的执行代码有这么几种:
- 静态初始化块
- 初始化块
- 构造方法
静态初始化块
静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
非静态初始化块
非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值。
构造方法
在每次初始化实例对象时调用。
重点:执行顺序->
- 在加载类时执行一次静态初始化块(之后不再调用)。
- 在每次初始化实例对象时:先执行非静态初始化块,再执行构造方法。
若是概念不好懂,请看如下实例:
public class InitializationClass { String name; // 声明变量name String sex; // 声明变量sex static int age;// 声明静态变量age // 构造方法 public InitializationClass() { System.out.println("通过构造方法初始化name"); name = "tom"; } // 构造方法 public InitializationClass(String name) { System.out.println("通过参数构造方法初始化name"); this.name = name; } // 构造方法 public InitializationClass(int age) { System.out.println("通过构造方法改变static InitializationClass.age"); InitializationClass.age = age; } // 构造方法 public InitializationClass(String name, String sex) { System.out.println("通过构造方法初始化name age"); this.name = name; this.sex = sex; } // 初始化块 { System.out.println("通过初始化块初始化sex"); sex = "男"; } // 静态初始化块 static { System.out.println("通过静态初始化块初始化age"); age = 20; } public void show() { System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age); System.out.println("------------------------------"); } public static void main(String[] args) { // 创建对象 InitializationClass obj1 = new InitializationClass("qiuhua"); obj1.show(); InitializationClass obj2 = new InitializationClass(10); obj2.show(); InitializationClass obj3 = new InitializationClass("jing", "女"); obj3.show(); }}
通过静态初始化块初始化age
通过初始化块初始化sex
通过参数构造方法初始化name
姓名:qiuhua,性别:男,年龄:20
------------------------------
通过初始化块初始化sex
通过构造方法改变static InitializationClass.age
姓名:null,性别:男,年龄:10
------------------------------
通过初始化块初始化sex
通过构造方法初始化name age
姓名:jing,性别:女,年龄:10
------------------------------
转:https://www.cnblogs.com/Berryxiong/p/6245100.html
原文地址:https://www.cnblogs.com/seamanone/p/9568813.html
时间: 2024-10-09 23:40:38