在 Java 的程式進入點(Entry point),main()方法中必須撰寫 String[] args,這個 String 陣列的作用是讓您在啟動 Java 程式時,可以一併指定引數給 Java 程式來使用,例如若您的 Java 程式為 ArgsDemo,則您可以這麼執行 Java 程式:
java ArgsDemo para1 para2
Java 程式執行後,args[0]將儲存"para1"字串,arg[1]將儲存"para2"字串,啟動程式時您所提供的引數稱之為命令列引數( Command line arguments ) ,程式碼 9-12 中先簡單的示範如何將使用者提供的命令列引數顯示出來。
public class ArgsDemo{ public static void main(String[] args) { System.out.println("顯示命令列引數.."); for(String arg : args) { System.out.println(arg); } } }程式碼 9-12 ArgsDemo.java
執行的結果如下所示:
您可以看到,在提供命令列引數給 Java 程式時,是以空白作為分隔的依據,如果您打算提供一個內含空白的字串作為引數,則可以用雙引號來包括該字串。
命令列引數是以 String 物件儲存於 String 陣列 args 之中,如果您打算將之轉換為基本資料型態,則必須使用表 9-3 中各類別所提供的剖析方法:
方法 | 說明 |
---|---|
Byte.parseByte(String s) | 將 s 剖析為 byte 型態數值 |
Short.parseShort(String s) | 將 s 剖析為 short 型態數值 |
Integer.parseInt(String s) | 將 s 剖析為 int 型態數值 |
Long.parseLong(String s) | 將 s 剖析為 long 型態數值 |
Float.parseFloat(String s) | 將 s 剖析為 float 型態數值 |
Double.parseDouble(String s) | s 剖析為 double 型態數值/td> |
舉個例子來說,程式碼 9-13 在執行時可接受兩個數字,程式會將之剖析為 double 型態之數值,並顯示加減乘除後的結果:
public class SimpleCalc{ public static void main(String[] args){ if (args.length == 0){ System.out.println("請提供兩個數字.."); } else{ double num1 = Double.parseDouble(args[0]); double num2 = Double.parseDouble(args[1]); System.out.println(num1 + " + " + num2 + " = " + (num1 + num2)); System.out.println(num1 + " - " + num2 + " = " + (num1 - num2)); System.out.println(num1 + " * " + num2 + " = " + (num1 * num2)); System.out.println(num1 + " / " + num2 + " = " + (num1 / num2)); } } }程式碼 9-13 SimpleCalc.java
程式碼第 3 行中先檢查 args 的長度是否為 0,如果為 0 表示使用者並沒有輸入引數,此時顯示提示訊息要求使用者輸入引數,因為引數是儲存在 args 陣列的元素中,如果長度為 0 又指定 args[0]、args[1] 試圖取得引數,則會發生ArrayIndexOutOfBoundsException 例外,因而檢查 args 陣列的長度是必要的,執行結果如下所示:
如果在使用對應的剖析方法時,無法順利將 String 物件剖析為對應型態的數值時,則會丟出 NumberFormatException 例外。
下列參考資料能夠對本章節所討論的話題提供 更詳細的說明: