首頁 >Java >java教程 >Java中main()方法的用法介紹

Java中main()方法的用法介紹

不言
不言轉載
2019-02-23 16:52:023715瀏覽

這篇文章帶給大家的內容是關於Java中main()方法的用法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

Java程式的入口---main()方法的簽章為:public static void main(String[] args) {...} ,其中,

public修飾符:Java類別由JVM調用,為了讓JVM可以自由呼叫這個main()方法,所以使用public修飾符把這個方法暴露出來。

static修飾符:JVM呼叫這個主方法時,不會先建立該主類別的對象,然後透過對象來呼叫該主方法。 JVM直接透過此類別來呼叫主方法,因此使用static修飾此主方法。

♦ void回傳值:因為主方法被JVM調用,該方法的回傳值將會傳回給JVM,這沒有任何意義,因此main()方法沒有傳回值。

上面方法中也包含一個字串陣列形參String[] args,根據方法呼叫的規則:誰呼叫方法,誰負責為形參賦值。也就是說,main()方法由JVM調用,即args形參應該由JVM負責賦值。但JVM怎麼知道要為args數組賦值呢?先看下面程式:

public class ArgsTest{
  public static void main(String[] args){
    //输出args数组的长度
    System.out.println(args.length);
    //遍历args数组的每一个元素
    for(String arg : args){
      System.out.println(arg);
    }
  }
}

上面程式是最簡單的「hello world」程序,只是這個程式增加了輸出args數組的長度,遍歷arg數組元素的程式碼。使用java ArgsTest指令運行上面的程序,看到程式只是輸出一個0,這表示args數值是一個長度為0的數組,這是合理的,因為電腦是沒有思考能力的,它只能忠誠地執行使用者交給它的任務,既然程式沒有為args數組設定參數值,那麼JVM就不知道args數組的元素,所以JVM將args數組設定為長度為0的數組。

改為一下指令執行上面的程式:

java ArgsTest Java Spring

列印結果為:

##

2
Java
Spring

可以得出,如果執行java程式時在類別名稱後面緊跟著一個或多個字串(多個字串以空格隔開),JVM就會把這些字串一次賦值給args數組元素。執行Java程式時的參數與args陣列之間的關係為:第一個參數對應第一個陣列元素,第二個參數對應第二個陣列元素,... ,以此類推。

如果某參數本身包含了空格,則應該將該參數用雙引號""括起來,否則JVM會把這個空格當成參數分隔符,而不是當成參數本身。例如,採用以下指令來執行上面的程式:

java ArgsTest "Java Spring"

看到args的長度是1,只有一個陣列元素,其值為Java Spring。

問題:如何實作在main()方法執行之前輸出"hello world"?

眾所周知,在Java語言中,main()方法是程式的入口方法,在程式執行時,最先載入的就是main()方法,但這是否意味著main()方法就是程式運行時第一個被執行的模組呢?

答案是否定的。在Java語言中,由於靜態區塊在類別載入時就會被調用,因此可以在main()方法執行前,利用靜態區塊實作輸出「hello world」的功能,範例如下:

public class Test{
  static{
    System.out.println("hello world");
  }
  public static void main(String[] args){
    System.out.println("hello my world");
  }
}

程式運行結果為:

#

hello world
hello my world

由於靜態程式碼區塊不管順序如何,都會在main()方法執行之前執行,因此,以下程式碼會與上面的程式碼有相同的輸出結果:

public class Test{
  public static void main(String[] args){
    System.out.println("hello my world");    
    static{
      System.out.println("hello world");
    }
  }
}

以上是Java中main()方法的用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除