初始化块 Java

代码见《Java核心技术卷1》–4.6对象构造
关于初始化块的内容链接: 面向对象–初始化块.

public class ConstructorTest {
    public static void main(String args[]) {
       Employee[] staff = new Employee[3];
       staff[0] = new Employee("Harry",40000);
       staff[1] = new Employee(60000);
       staff[2] = new Employee();
       for(Employee e: staff) {
           System.out.println("name = "+ e.getName()+",id = "+ e.getId()+",salary = "+ e.getSalary());
       }
    }
}

import java.util.Random;

public class Employee {
    private static int nextId;//因为它要在静态构造块中使用,所以必须为static变量
    private int id;
    private String name = "";
    private double salary;

    static//这是一个静态初始化块,在类第一次加载时执行,且只执行一次
    {
        Random generator = new Random();//随机数方法
        nextId = generator.nextInt(10000);//给nextId一个0~9999的随机整数
    }
//执行完静态构造块后,nextId的值就确定了,这也就解释了为什么员工的id数字是连续的

    {//这是一个实例初始化块
        id = nextId;
        nextId++;
    }

    public Employee(String n,double s)  {
        name = n;
        salary = s;
    }

    public Employee(double s) {
        this("Employee #"+nextId,s);//调用另一个构造器,从这一行开始,执行所调用的构造器的代码
    }

    public Employee() {//这是一个无参构造器

    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return  salary;
    }

    public int getId() {
        return  id;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值