1. 程式人生 > >java類中的程式碼執行順序

java類中的程式碼執行順序

package io;

public class Employee {

	private static int nextId = 1;  //靜態變數可以使用  類名.變數名  來呼叫
    private String name;

    public Employee (String name) {
        //this代表當前類,this可以呼叫當前類內部的屬性和方法,this關鍵字常用在構造器和get/set方法中
    	this.name = name;  
        
        System.out.println("構造器方法!");
    }

    //匿名程式碼塊(先於構造器執行,但在靜態程式碼塊之後執行)
    {
        System.out.println("匿名程式碼塊!");
    }

    //靜態程式碼塊(最先執行),JVM載入類時會自動執行靜態程式碼塊
    static{
        System.out.println("靜態程式碼塊!");
    }

    public String getName() {
    	int i = Employee.getNextId(); //非靜態方法--可以呼叫靜態方法和屬性
        return name+i;
    }

    public static int getNextId() {   //靜態方法可以使用  類名.方法名  來呼叫
    	
    	//靜態方法,必須實現方法體--- 不能呼叫非靜態方法和非靜態屬性,也不能使用this,super關鍵字
        return Employee.nextId;   //直接呼叫靜態成員變數,不能呼叫非靜態成員變數,例:name
    }

	public static void main(String[] args) {
		
		Employee e = new Employee("Harry");
        System.out.println(e.getName());  //通過建立物件引用非靜態方法
        System.out.println(Employee.getNextId());  //靜態方法直接呼叫
        
        //總結:java類中的程式碼執行順序
        //靜態程式碼塊-->匿名程式碼塊-->構造器方法-->main方法

	}

}

執行結果:

靜態程式碼塊!
匿名程式碼塊!
構造器方法!
Harry1
1

------------------------------------------------------------------------------------------
總結:java類中的程式碼執行順序
        靜態程式碼塊-->匿名程式碼塊-->構造器方法-->main方法