从一个java小程序看java的初始化流程

简介

java的构造函数执行顺序深究

code

package test1;import java.util.*;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(); // print out information about all Employee objects for(Employee e: staff){ System.out.println("name=" + e.getName() + ",id=" + e.getId() + ",salary=" + e.getSalary()); } }}class Employee{ private static int nextId; private int id; private String name = ""; private double salary; // static initialization block { Random generator = new Random(); nextId = generator.nextInt(10000); System.out.println("static"); } { id = nextId; nextId++; System.out.println("nextId++"); } public Employee(String n, double s){ name = n; salary = s; System.out.println("constr n s"); } public Employee(double s) { this("Employee #" + nextId, s); System.out.println("sss"); } public Employee(){ System.out.println("mo ren"); } public String getName(){ return name; } public double getSalary() { return salary; } public int getId() { return id; }}

answer

staticnextId++constr n sstaticnextId++constr n ssssstaticnextId++mo renname=Harry,id=5175,salary=40000.0name=Employee #5176,id=5063,salary=60000.0name=,id=5920,salary=0.0

TIPS

首先构造一个对象的时候先构造了static块内容会先执行
然后是 独立块 {} 内容执行
然后是构造函数的执行 bingo~

从一个java小程序看java的初始化流程

相关文章