java基本问题

时间:2011-02-07 05:15:12

标签: java

public static void main( String arg[] )

在上面的陈述中,我可以使用int数组代替String数组吗?如果我不在括号中添加任何内容,即如果我使用空括号,会发生什么?

9 个答案:

答案 0 :(得分:5)

使用您提到的更改编译代码时,它将成功编译。当您尝试运行时,JVM将使用String数组作为参数检查main方法。由于没有使用String数组作为参数的main方法,因此您的代码将无法成功执行并抛出NoSuchMethodError。

答案 1 :(得分:3)

不,我认为你不能使用int数组而不是String数组。因为操作系统使用参数int来传递一个整数值,指定用户输入的命令行参数的数量。所以你必须遵循以下模式。

public static void main(String[] args)

public static void main(String args[]) 

答案 2 :(得分:2)

代码将编译但不会运行。

string []的原因是人们可以通过命令行传递参数。

答案 3 :(得分:2)

我不确定Int array你的意思,但不,你不能。方法签名需要与public static void main(String[] args)完全匹配。你唯一可以改变的是参数的名称。方法的名称,参数类型,可见性(公共与私有等)是运行时用于查找方法本身的内容。如果它不符合该签名,则它不是入口点方法,因此在您的应用程序启动时不会被调用。

但是,应该注意的是,您所建议的内容将在没有问题的情况下进行编译。在您尝试运行该应用程序之前,不会出现这些问题。

答案 4 :(得分:1)

编译器将接受但运行时将为您提供NoSuchMethodError

答案 5 :(得分:0)

主要方法是java应用程序的入口点。如果您查看java language specification,请具体说明:

  

必须声明方法main   公共,静态和无效。它必须   接受一个单一的参数   字符串数组。这种方法可以   声明为

public static void main(String[] args)
     

public static void main(String... args)

传入的String []数组包含已由启动的应用程序传入的任何命令行参数。然后,您可以阅读它们并根据需要进行转换。

答案 6 :(得分:0)

如果您希望获取数字而不是字符串,请使用此方法

public static void main(String[] args) {

    int[] numbers = new int[args.length];
    for(int i = 0; i < args.length; i++) numbers[i] = Integer.parseInt(args[i]);

}

处理例外是读者的练习。

其他答案很好地解释了“为什么”的其他问题。

答案 7 :(得分:0)

不,它会产生类似的运行时错误 在课堂测试中未找到的主要方法,请将主要方法定义为:    public static void main(String [] args)

JAVA对主方法签名更具体,它将您的方法视为一个类中的一般方法。

答案 8 :(得分:0)

如果要将String参数从主静态方法转换为int,请执行以下操作:

public class StringToIntArgs {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] anIntArray = new int[args.length];

        for(int i = 0; i < args.length; ++i) {
            anIntArray[i] = Integer.valueOf(args[i]);

            System.out.println(((Object)anIntArray[i]).getClass().getName());
        }
    }

}

现在使用以下参数编译并运行Java代码:

C:\Users\smith\Documents\programming\java>javac StringToIntArgs.java

C:\Users\smith\Documents\programming\java>java StringToIntArgs 1 2 3 4 5
java.lang.Integer
java.lang.Integer
java.lang.Integer
java.lang.Integer
java.lang.Integer