String[] 和 String[] 有什么区别?在爪哇?

2022-09-01 08:17:34

我应该如何在Java中声明方法?main()

喜欢这个:

public static void main(String[] args)
{
    System.out.println("foo");
}

或者像这样:

public static void main(String... args)
{
    System.out.println("bar");
}

如果有的话,它们之间实际上有什么区别?String[]String...


答案 1

我应该如何在Java中声明main()方法?

String[]并且在内部是相同的,即字符串数组。不同之处在于,当您使用 varargs 参数 () 时,您可以调用该方法,如下所示:String...String...

public void myMethod( String... foo ) {
    // do something
    // foo is an array (String[]) internally
    System.out.println( foo[0] );
}

myMethod( "a", "b", "c" );

// OR
myMethod( new String[]{ "a", "b", "c" } );

// OR without passing any args
myMethod();

当您将参数声明为 String 数组时,必须通过以下方式调用:

public void myMethod( String[] foo ) {
    // do something
    System.out.println( foo[0] );
}

// compilation error!!!
myMethod( "a", "b", "c" );

// compilation error too!!!
myMethod();

// now, just this works
myMethod( new String[]{ "a", "b", "c" } );

String[] 和 String 之间到底有什么区别...如果有的话?

约定是用作主方法参数,但使用也有效,因为当您使用varargs时,您可以以与调用数组作为参数的方法相同的方式调用该方法,并且参数本身将是方法主体内的数组。String[]String...

一件重要的事情是,当你使用vararg时,它需要是方法的最后一个参数,你只能有一个vararg参数。

你可以在这里阅读更多关于varargs的信息:http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html


答案 2

String...转换为 .主要区别在于,您可以通过2种方式调用vararg方法:String[]

method(a, b, c);
method(new String[] {a, b, c});

而您需要调用一个接受如下数组的方法:

method(new String[] {a, b, c});

对于该方法,它没有区别。main