Wat is het verschil tussen String[] en String… in Java?

Hoe moet ik de main()methode declareren in Java?

Zoals dit:

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

Of zoals dit:

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

Wat is eigenlijk het verschil tussen String[]en eventueel String...?


Antwoord 1, autoriteit 100%

Hoe moet ik de methode main() in Java declareren?

String[]en String...zijn intern hetzelfde, i. e., een array van Strings.
Het verschil is dat wanneer je een varargs-parameter (String...) gebruikt, je de methode kunt aanroepen als:

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();

En wanneer u de parameter als een String-array declareert, MOETdeze manier worden aangeroepen:

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" } );

Wat is eigenlijk het verschil tussen String[]en String… indien aanwezig?

Het verdrag is om String[]te gebruiken als de hoofdmethode parameter, maar met String...Werkt ook, omdat u varargs gebruikt, kunt u de methode bellen Op dezelfde manier belt u een methode met een array als parameter en de parameter zelf is een array in de methode-instantie.

Een belangrijk ding is dat wanneer u een vararg gebruikt, de laatste parameter van de methode moet zijn en u slechts één vararg-parameter kunt hebben.

U kunt hier lezen over Varargs hier: http: //docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html


2, Autoriteit 9%

String...wordt geconverteerd naar een String[]. Het belangrijkste verschil is dat u op 2 manieren een Vararg-methode kunt bellen:

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

overwegende dat u een methode moet bellen die een array als deze accepteert:

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

Voor de mainmethode maakt het geen verschil.


3, Autoriteit 6%

String[] argsNeemt een array-argument.

String... argsneemt een willekeurig aantal snaren als het argument en creëert een array eruit.


Antwoord 4

String[]is een array van Strings. Daarom een container met veel variabelen van het gegevenstype String. Bijvoorbeeld:

String[] strArray = new String[2];
str[0] = "Hello";
str[1] = "World";
String str = "Hello World";

Ik hoop dat dit je vragen oplost 🙂

Other episodes