Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - 命令行参数



Java 中,命令行参数是用于在应用程序执行期间向 Java 程序传递输入的一种方式。命令行参数可以通过多种方式传递给 Java 应用程序或程序。最常见的是,命令行参数是从执行 Java 程序 的控制台传递的。在程序执行期间提供的命令行参数在main()方法中作为 字符串 数组捕获。

传递和访问命令行参数

考虑以下传递命令行参数的语法

javac tester.java
java tester arg1 arg2 arg3

这里我们编译了一个名为 tester.java 的 Java 文件,并在使用 java 运行 tester 类时,传递了三个用空格分隔的参数。我们可以向 Java 程序传递任意数量的命令行参数。 Java 虚拟机 (JVM) 将这些输入封装到args[]数组中。我们可以使用args.length检查传递的参数数量。如果没有命令行参数,则此数组为空。

class Tester {
   public static void main(String[] args){
   ...   
   }
}

我们可以使用命令行参数传递字符串、整数和任何其他原始值。传递的每个参数都按输入顺序在数组中可用,从args[0]开始。

命令行参数的优势

  • 命令行参数允许通过在应用程序启动前传递参数来配置应用程序行为。批处理过程就是一个例子,其中大量使用命令行参数来执行带有配置参数的 Java 命令。此机制可以通过控制台输入动态参数化 Java 程序,从而增强程序的多功能性和交互性。
  • 对于基于控制台的应用程序,命令行参数有助于用户输入的检索和操作。

单个命令行参数示例

在此示例中,我们检查是否恰好传递了一个参数来表示名称。如果未传递任何参数或传递了多个参数,则我们打印错误消息“传递的参数数量无效”。否则,我们将打印带有问候语的名称。

public class Tester {

   // args array represents the command line arguments passed
   public static void main(String[] args) {
      // if only one argument is passed
      if(args.length == 1) {
	     String name = args[0];
         System.out.println("Welcome " + name + "!");
      }else { // otherwise print an error message
         System.out.println("Invalid Command line argument(s) passed.");        
      }	   
   }
}

输出

让我们编译并运行上述程序,不带任何命令行参数,这将产生以下结果:

D:\test>javac Tester.java

D:\test>java Tester
Invalid Command line argument(s) passed.

这里,我们使用 javac 命令编译了 Java 代码,然后使用 java 命令在不带任何命令行参数的情况下运行。让我们再次运行 java 命令并带上所需的参数。

D:\test>java Tester Mahesh
Welcome Mahesh!

多个命令行参数示例

在此示例中,我们检查是否恰好传递了两个参数来表示名称和年龄。由于年龄是一个数字,因此我们使用 parseInt() 方法解析参数。如果未传递任何参数或传递了两个以上参数,则我们打印错误消息“传递的参数数量无效”。否则,我们将打印收到的名称和年龄。

public class Tester {

   // args array represents the command line arguments passed
   public static void main(String[] args) {
      // if two arguments are passed
      if(args.length == 2) {
	     String name = args[0];
         // parse the age as int
         int age = Integer.parseInt(args[1]);
         System.out.println("Name: " + name + ", age: " + age);
      }else { // otherwise print an error message
         System.out.println("Invalid Command line argument(s) passed.");        
      }	   
   }
}

输出

让我们编译并运行上述程序,不带任何命令行参数,这将产生以下结果:

D:\test>javac Tester.java

D:\test>java Tester
Invalid Command line argument(s) passed.

这里,我们使用 javac 命令编译了 Java 代码,然后使用 java 命令在不带任何命令行参数的情况下运行。让我们再次运行 java 命令并带上所需的参数。

D:\test>java Tester Mahesh 40
Name: Mahesh, age: 40

结论

Java 命令行参数对于创建可以动态接受参数的已参数化 Java 程序非常有用。用户可以对程序的行为进行运行时控制,因为参数可以传递到 main() 方法。使用命令行参数,我们可以管理程序的输出、设置设置参数以及在运行时指定输入文件,而无需任何编译时依赖项。

我们可以通过多种方式向 Java 程序传递命令行参数。各种 IDE 都支持在其执行配置中提供参数。此外,它们也很容易使用。当您运行代码时,可以在程序的配置文件中设置参数,或在命令行中提供。

广告