码迷,mamicode.com
首页 > 微信 > 详细

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

时间:2020-07-27 23:52:04      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:employee   pre   独立   import   rgs   string   初始化   java   out   

简介

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

static
nextId++
constr n s
static
nextId++
constr n s
sss
static
nextId++
mo ren
name=Harry,id=5175,salary=40000.0
name=Employee #5176,id=5063,salary=60000.0
name=,id=5920,salary=0.0

TIPS

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

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

标签:employee   pre   独立   import   rgs   string   初始化   java   out   

原文地址:https://www.cnblogs.com/eat-too-much/p/13387016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!