1. 程式人生 > >Java學習筆記之main方法和程式碼塊

Java學習筆記之main方法和程式碼塊

還記得我們寫的第一個Java程式,hello world嗎?

public Class HelloWorld{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}

這段程式碼非常簡單,作用就是呼叫main方法列印一句“Hello World!”

1、main方法

public static void main(String[] args)
  • public:表示該方法可以被外部所呼叫
  • static:表示此方法可以由類名稱直接呼叫
  • void:主方法是程式的起點,所以不需要任何返回值
  • main:系統規定好預設呼叫的方法名稱,執行的時候,預設找到main方法名稱
  • String[] args:表示執行時的引數,引數傳遞的形式:類名稱 引數1 引數2 引數3 … 引數之間用空格分隔

如果一個程式執行時,要求必須輸入三個引數,否則無法執行,則可以在程式執行前加一個判斷

public Class HelloWorld{
	public static void main(String[] args){
		if(args.length!=3){
			System.out.println("引數個數不對,無法執行");
			System.exit(1);  // 直接退出程式
} for(int i=0;i<args.length;i++){ System.out.println("第" + (i+1) + "個引數:" + args[i]); } } }

2、程式碼塊

程式碼塊其實從一開始寫程式就接觸到了,就是用 { } 括起來的一段程式碼,主要分為普通程式碼塊、構造塊、靜態程式碼塊、同步程式碼塊。

2.1 普通程式碼塊

直接定義在方法裡的程式碼塊稱為普通程式碼塊

public Class HelloWorld{
	public static void main(String[] args){
		{	// 普通程式碼塊
int x = 10; // 區域性變數 System.out.println("普通程式碼塊:x = " + x); } int x = 100; System.out.println("程式碼塊之外:x = " + x); } } 執行結果: 普通程式碼塊:x = 10 程式碼塊之外:x = 100
2.2 構造塊

定義在類裡的程式碼塊

public class ChapterFive {
    public static void main(String[] args){
        new Person();
        new Person();
        new Person();
    }
}

class Person{
    {  // 直接在類中編寫程式碼,稱為構造塊
        System.out.println("1、構造塊");
    }
    public Person(){
        System.out.println("2、構造方法");
    }
}

執行結果:
1、構造塊
2、構造方法
1、構造塊
2、構造方法
1、構造塊
2、構造方法

可以看到:構造塊先於構造方法執行,且多次執行,只要一例項化物件,就執行構造塊中的內容

2.3 靜態程式碼塊

直接用static宣告的程式碼塊就叫靜態程式碼塊

public class ChapterFive {
    static{ // 在主方法的類裡定義靜態程式碼塊
        System.out.println("主方法類裡定義靜態程式碼塊");
    }
    public static void main(String[] args){
        new Person();
        new Person();
        new Person();
    }
}

class Person{
    {  // 直接在類中編寫程式碼,稱為構造塊
        System.out.println("1、構造塊");
    }
    static {  // 用static宣告的程式碼塊就叫靜態程式碼塊
        System.out.println("0、靜態程式碼塊");
    }

    public Person(){
        System.out.println("2、構造方法");
    }
}

執行結果:
主方法類裡定義靜態程式碼塊
0、靜態程式碼塊
1、構造塊
2、構造方法
1、構造塊
2、構造方法
1、構造塊
2、構造方法

可以看到,靜態塊優於主方法先執行,在普通類中的靜態塊優先於構造塊執行,不管例項化多少個物件,靜態塊只執行一次,靜態程式碼塊的作用就是靜態屬性初始化,因為靜態屬性是全域性共有的,所以只需要執行一次即可。

2.4 同步程式碼塊

後面學到多執行緒再講