[QUIZ] String vergleiche

Christian Fein

Erfahrenes Mitglied
Möglichkeit A
Code:
    for(int i = 0; i < 100000; i++)
      korrekt = ("EinString"=="EinString");

Möglichkeit B
Code:
    for(int i = 0; i < 100000; i++)
      korrekt = (new String("EinString")==new String("EinString"));

Möglichkeit C
Code:
    for(int i = 0; i < 100000; i++)
      korrekt = "EinString".equals("EinString");

Möglichkeit D
Code:
for(int i = 0; i < 100000; i++)
      korrekt = new String("EinString").equals("EinString");

Welcher der Code abschnitte liefert korrekt == true und welcher der Vergleiche
ist der performanteste.
Zudem lasse ich das nur gelten mit einer richtigen Erklärung wieso ist XY perfomanter
als AB und weshalb ist FG falsch usw.
Zudem bitte bei der Platzvergabe wie folgt:
1. Platz = G
2. Platz = H
usw (statt G / H natürlich a / b / c / d)

Auflösung gibts noch diese Woche :)
 
Möglichkeit A: liefert false zurück, weil die beiden Stringliterale nicht die gleiche Objektreferenz haben.
Möglichkeit B: liefert ebenfalls false zurück, weil zwei String-Objekte mit unterschiedlicher Referenz erstellt werden.
Möglichkeit C: liefert true zurück, weil das Stringliteral direkt als eine Art Konstante im Code erkannt wird und entsprechende Methoden besitzt.
Möglichkeit D: liefert ebenfalls true zurück, weil hier ein neues String-Objekt erstellt und mit einer passenden Konstante verglichen wird.

Möglichkeit C dürfte dabei am performantesten sein, weil man sich den Umweg über die Erstellung eines String-Objektes mit dem Konstruktor spart.
 
-

B ergibt false, da unterschiedliche Referenzen.
Aus C sollte der hoffentlich intelligente Compiler A machen.
D ist schlecht, da jedesmal ein neues Objekt erstellt wird.
Somit sollten A und C am schnellsten laufen.
 
Re: -

Original geschrieben von Patrick Kamin
B ergibt false, da unterschiedliche Referenzen.
Aus C sollte der hoffentlich intelligente Compiler A machen.
D ist schlecht, da jedesmal ein neues Objekt erstellt wird.
Somit sollten A und C am schnellsten laufen.

Schon mal sehr gut, aber eine genauere erklärung von:
"Aus C sollte der hoffentlich intelligente Compiler A machen"
sollte es schon sein :)
 
sehr interessant

Ahh ein Quiz für Moderatoren oder wie seh ich das? ;)
Interessante Fragestellung!
Da ich Java "leider" nur auf Grundlagenbasis kenne interessiert mich ob oder warum die Möglichkeit A korrekt sein kann.
 
Re: sehr interessant

Original geschrieben von Thomas Kuse
Ahh ein Quiz für Moderatoren oder wie seh ich das? ;)
Interessante Fragestellung!
Da ich Java "leider" nur auf Grundlagenbasis kenne interessiert mich ob oder warum die Möglichkeit A korrekt sein kann.

Soviel sei verraten:
Bei A) handelt es sich um einen Spezialfall ;)

Würde mich freuen wenn du es dennoch versuchst und einfach mitmachst. Dies nicht zu wissen ist wirklich kein Beinbruch :)
 
Ich liebe Spezialfälle, das ist doch das, weshalb man sich als Programmierer am meisten freut wenn's unerwartet doch mal geht ;)
 

Neue Beiträge

Zurück