本文目录导读:

在Java中,成员变量的初始化有多种方式,下面我会通过一个具体的案例来说明不同的初始化方法。
案例:学生信息管理系统
public class Student {
// 1. 默认初始化(系统自动赋默认值)
private String name; // 默认值: null
private int age; // 默认值: 0
private double score; // 默认值: 0.0
private boolean isActive; // 默认值: false
private String[] courses; // 默认值: null
// 2. 显式初始化(声明时直接赋值)
private String gender = "未知";
private static int totalStudents = 0;
// 3. 代码块初始化
{
// 实例初始化块 - 每次创建对象时执行
System.out.println("执行实例初始化块");
this.age = 18; // 默认年龄18岁
}
static {
// 静态初始化块 - 类加载时执行一次
System.out.println("执行静态初始化块");
totalStudents = 100; // 初始学生总数
}
// 4. 构造器初始化
public Student() {
// 无参构造器
this.name = "未知学生";
this.courses = new String[]{"未选课"};
totalStudents++; // 每创建一个实例,总数加1
}
public Student(String name, int age) {
// 有参构造器 - 通过参数初始化
this.name = name;
this.age = age;
this.courses = new String[3]; // 初始化学员课程数组
totalStudents++;
}
// getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 显示学生信息的方法
public void displayInfo() {
System.out.println("姓名: " + name);
System.out.println("年龄: " + age);
System.out.println("性别: " + gender);
System.out.println("成绩: " + score);
System.out.println("活动状态: " + isActive);
System.out.println("课程数: " + (courses != null ? courses.length : 0));
}
public static void main(String[] args) {
System.out.println("=== 创建第一个学生 ===");
Student student1 = new Student();
student1.displayInfo();
System.out.println("\n=== 创建第二个学生 ===");
Student student2 = new Student("张三", 20);
student2.displayInfo();
System.out.println("\n=== 通过setter修改学生1信息 ===");
student1.setName("李四");
student1.displayInfo();
System.out.println("\n总学生数: " + Student.totalStudents);
}
}
初始化顺序和执行结果
当运行上面的代码时,输出结果如下:
执行静态初始化块
=== 创建第一个学生 ===
执行实例初始化块
姓名: 未知学生
年龄: 18
性别: 未知
成绩: 0.0
活动状态: false
课程数: 1
=== 创建第二个学生 ===
执行实例初始化块
姓名: 张三
年龄: 20
性别: 未知
成绩: 0.0
活动状态: false
课程数: 3
=== 通过setter修改学生1信息 ===
姓名: 李四
年龄: 18
性别: 未知
成绩: 0.0
活动状态: false
课程数: 1
总学生数: 102
初始化的优先级顺序
静态初始化块(类加载时,仅执行一次)
2. 显式初始化
3. 实例初始化块(每次创建对象时执行)
4. 构造器初始化
- 默认初始化:基本类型有默认值,引用类型为null
- 显式初始化:在声明变量时直接赋值
- 代码块初始化:静态代码块类加载时执行,实例代码块每次创建对象时执行
- 构造器初始化:通过构造函数的参数进行灵活初始化
- setter方法:可以在对象创建后动态修改成员变量的值
选择合适的初始化方式取决于具体的业务需求,一般情况下推荐使用构造器进行必要的初始化,使用setter方法进行后续的修改。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播