可以给类的非静态的属性(即实例变量)赋值的位置有:
1️⃣ 默认初始化
2️⃣ 显示初始化 或 5️⃣ 代码块中初始化
3️⃣ 构造器中初始化
=====================
4️⃣ 有了对象以后,通过“对象.属性”或“对象.方法”的方式进行赋值
执行的先后顺序
1️⃣ - 2️⃣ / 5️⃣ - 3️⃣ - 4️⃣
关于字节码文件中的<init>的简单说明:
<init>方法在字节码文件中可以看到。每个<init>方法都对应着一个类的构造器。(类中声明了几个构造器就会有几个<init>)
编写的代码中的构造器在编译后就会以<init>方法的方式呈现
<init>方法内部的代码包含了实例变量的显式赋值、代码块中的赋值和构造器中的代码。
<init>方法用来初始化当前创建的对象的信息的。
给实例变量赋值的位置很多,开发中如何选择?
显式赋值:比较适合于每个对象的属性值相同的场景
构造器中赋值:比较适合于每个对象的属性值不同的场景