谁将“args”传递给主要方法?

时间:2010-06-22 19:35:45

标签: c# java

我尝试运行一个小的c#和java程序(使用VS和NetBeans而不是命令行)并打印args [0]的值,但我得到了IndexOutOfRangeException
我知道args用于传递命令行参数,但在main方法中它是仍然,所以如果没有args参数,程序将如何运行传递给它?

5 个答案:

答案 0 :(得分:5)

  

那么如果没有传递args参数,程序将如何运行?   创建程序时,将分配一个新数组并使用命令行中的值填充该数组。

如果没有(因为你没有在IDE中指定它们),那么数组将为空(非空,至少不是Java)

哟避免让你的IndexOutOfRangeException要么不使用参数,要么分配默认值并验证args数组长度。

例如(在Java中)

public class YourClass {
    public static void main( String [] args ) {  
          String param = "someDefault";
          // validate args.length 
          if( args.length > 0 ) { // if there is a parameter
              param = args[0]; // use it 
          }
          // continue with "param" already defined.

    }
 }

答案 1 :(得分:3)

Java允许空数组;即。

String[] args = new String[0];

index >= args.length以来,异常是一致的。

关于这一特定主题,还有一个注意事项:与C程序不同,arg 0不是程序本身。因此,使用空数组调用main(String[])是很常见的。

答案 2 :(得分:1)

如果没有参数,则数组将为空 - 如果没有传递数组,则会有NullReferenceException

答案 3 :(得分:0)

如果在命令行上传递它们,则args []数组中只有元素。

java my.test.MyTest arg1 arg2

这将导致参数arg1和arg2在arg []数组中传递。如果你没有传递参数,那么arg []数组的长度为0,因此访问任何索引都会引发异常。

答案 4 :(得分:0)

在某些情况下,在调用命令行exe时不包含任何args是完全合理的。 args参数是为了告诉您是否传递了args,如果是,那么它们是什么。