我们可以使用public static void main(String [] [] args)吗?

时间:2011-02-01 08:34:34

标签: java

  

可能重复:
  how to use (String [] [] args) in java

我们可以在Java中使用public static void main(String [] [] args) 2d数组吗?

6 个答案:

答案 0 :(得分:5)

有三种方法可以定义main方法的参数:

  1. 经典Java风格

    public static void main(String[] args)
    
  2. C风格

    public static void main(String args[])
    
  3. New-school(JDK1.5之后)Java风格

    public static void main(String ... args)
    
  4. 所有这些都是等效的,只有在找到带有这些签名之一的方法时,VM才会启动您的类。


    实际上,它们并不完全相同,只有一个小区别:当通过反射访问时,Method.isVarArgs()只会为最后一个方法返回true。但它们仍然具有相同的签名(名称,参数类型,返回类型,可见性)

答案 1 :(得分:4)

不,你不能。如何指定命令行参数以适应二维数组? main(..)方法由java运行时调用,该运行时传递调用程序时指定的命令行参数。

答案 2 :(得分:3)

当然,您可以声明自己的主方法采用2d数组,但JVM在启动时不会自动执行,因为它会查找带签名的方法:

public static void main(String[] args)

有关主要方法的详细信息,请参阅Hello World tutorial

答案 3 :(得分:1)

其他问题指出了两个主要事实:

  • 您可以使用该签名的方法。
  • 不能用作切入点。

因此,如果你真的想要一个接受2D数组的入口点,你应该这样做:

public static void main(String[] args) {
   String[][] args2d;
   // some crazy code that parses args and initializes args2d with a 2D array
   main(args2d);
}

public static void main(String[][] args) {
   // your actual entry point here
}

请注意,在这种情况下,您不必将第二个方法声明为public,但如果您确实愿意,仍然可以执行此操作。

答案 4 :(得分:0)

不,你不能。因为main(String [] args)方法是JVM的特殊方法,它正在寻找

使用此签名的主要方法:

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

答案 5 :(得分:0)

没有二维数组不起作用。当你使用String时,args []意味着你要向编译器发送字符串参数数组,但你不能使用二维数组。 你将得到Class not found exception.But文件将编译。