9.9 命令行实参

本书前面一直对 main 方法的形参 args 置之不理,现在你已经熟悉了数组和字符串,我们终于可以说说 args 了。如果你不熟悉命令行界面,请阅读 A.3 节。

下面来编写一个程序以找出一系列数字的最大值。这里不从 System.in 读取数字,而是通过命令行实参来传递它们。这个程序的初始版本如下:

  1. public class Max {
  2. public static void main(String[] args) {
  3. System.out.println(Arrays.toString(args));
  4. }
  5. }

要运行这个程序,可在命令行中执行如下命令:

  1. java Max

输出表明,args 是个空数组(empty array),即不包含任何元素:

  1. []

但如果在命令行中提供了额外的值,它们将作为实参传递给 main。例如,如果你像下面这样运行这个程序:

  1. java Max 10 -3 55 0 14

输出如下:

  1. [10, -3, 55, 0, 14]

别忘了,args 的元素为字符串。要想找出最大的数字,必须将这些实参转换为整数。

下面的代码片段结合使用了改进的 for 循环和包装类 Integer 来分析实参并找出最大的值:

  1. int max = Integer.MIN_VALUE;
  2. for (String arg : args) {
  3. int value = Integer.parseInt(arg);
  4. if (value > max) {
  5. max = value;
  6. }
  7. }
  8. System.out.println("The max is " + max);

max 的初始值为 int 类型可表示的最小值,因此任何其他 int 值都比它大。如果 args 为空数组,结果将为 MIN_VALUE