一、属性初始化
1、对象属性初始化
三种初始化方式了解一下:
package cB_ai;
// ai attribute init
public class Hero {
// 对象属性3种初始化方式
// 声明时初始化
protected String name = "garen1"; // 英雄名称
protected float hp = 0.0f; // 血量
protected int moveSpeed = 100;
// 初始化块
{
name = "garen2";
hp = 100.0f;
moveSpeed = 200;
}
// 构造方法初始化
public Hero() {
name = "garen3";
hp = 200.0f;
moveSpeed = 300;
}
public static void main(String[] args) {
Hero h = new Hero();
System.out.println(h.name);
System.out.println(h.hp);
System.out.println(h.moveSpeed);
}
}
运行结果:脑瓜子开始转动,这三种初始化方式执行顺序是什么?为什么输出结果是这样?Debug一下,你就知道。详见https://how2j.cn/k/control-flow/control-flow-debug/1339.html?p=114999
是不是先声明初始化,再初始化块,构造方法
2、类属性初始化
二种初始化方式如下:
package cB_ai_2;
public class Hero {
protected String name; // 英雄名称
protected float hp; // 血量
// 声明时初始化
public static float maxHp = 9999.0f;
// 静态初始化块
static {
maxHp = 9999.1f;
}
public static void main(String[] args) {
System.out.println(Hero.maxHp);
}
}
运行结果: 根据结果得出,静态初始化块后执行
3、Which one will be printed?
some hero or one hero or the hero
package cB_ai3;
public class Hero {
protected String name = "some hero"; // 英雄名称
public Hero() {
name = "one hero";
}
{
name = "the hero";
}
public static void main(String[] args) {
Hero h = new Hero();
System.out.println(h.name);
}
}
我的学习源泉:https://how2j.cn/k/class-object/class-object-init/297.html?p=114999
Java自学网站:https://how2j.cn?p=114999