• 从一个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
            static
    	{
    		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
    nextId++
    constr n s
    sss
    nextId++
    mo ren
    name=Harry,id=3574,salary=40000.0
    name=Employee #3575,id=3575,salary=60000.0
    name=,id=3576,salary=0.0
    

    TIPS

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

    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    [友谊篇FRIENDSHIP]Learn with whole Life 一生的学习
    IIS还原备份xml配置文件
    从A到Z的人生名言
    爱情六十九课,节制抱怨
    C# list 去重复
    win7 iis7.5 下配置MVC3问题
    Kill oracle session
    Windows7删除文件提示"您需要权限来执行此操作"没有权限无法删除文件的解决方法
    json对象
    js的属性和方法的类型
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/13387016.html
Copyright © 2020-2023  润新知