Java String-declaratie

Wat is het verschil tussen String str = new String("SOME")en String str="SOME"
Geeft deze declaraties prestatievariatie.


Antwoord 1, autoriteit 100%

String str = new String("SOME")

maak altijd een nieuw object op de hoop

String str="SOME" 

gebruikt de String-pool

Probeer dit kleine voorbeeld:

       String s1 = new String("hello");
        String s2 = "hello";
        String s3 = "hello";
        System.err.println(s1 == s2);
        System.err.println(s2 == s3);

Gebruik het tweede formulier om te voorkomen dat er onnodige objecten op de heap worden geplaatst.


Antwoord 2, autoriteit 21%

Er is een klein verschil tussen beide.

Tweede declaratie wijst de verwijzing die is gekoppeld aan de constante SOMEtoe aan de variabele str

Eerste declaratie creëert een nieuwe String met als waarde de waarde van de constante SOMEen wijst zijn verwijzing toe aan de variabele str.

In het eerste geval is er een tweede String gemaakt met dezelfde waarde als SOME, wat meer initialisatietijd inhoudt. Als gevolg hiervan moet u het vermijden. Bovendien worden tijdens het compileren alle constanten SOMEgetransformeerd naar dezelfde instantie, die veel minder geheugen gebruikt.

Geef daarom altijd de voorkeur aan de tweede syntaxis.


Antwoord 3, autoriteit 2%

String s1 = "Welcome"; // Does not create a new instance  
String s2 = new String("Welcome"); // Creates two objects and one reference variable  

Antwoord 4

De eerste zal een nieuw String-object in heap maken en str zal ernaar verwijzen. Daarnaast wordt letterlijk ook in String pool geplaatst. Het betekent dat er 2 objecten worden gemaakt en 1 referentievariabele.

De tweede optie maakt String-letterlijk alleen in pool en str zal ernaar verwijzen. Er wordt dus maar 1 object gemaakt en 1 referentie. Deze optie gebruikt altijd de instantie uit String pool in plaats van elke keer dat deze wordt uitgevoerd een nieuwe te maken.

Other episodes