Stringvergleich

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Strings sind ja Objekte, und ich habe gelernt, dass man Strings nur mit equals vergleichen kann da == einen Zeigervergleich durchführt.

Wenn ich das aber an folgendem Code ausprobiere bekomme ich für...
Code:
class A
{
    public static void main (String[] args)
    {
        String a = "Hallo";
        String b = "Hallo";
        System.out.println(a==b);
    }
}
...TRUE als Ergebnis!!

Wenn ich String a = "blabla" setze bekomme ich FALSE...
Also ein Inhaltsvergleich und kein Zeigervergleich, da ich sonst immer FALSE erhalten müsste... :?: :?:

Warum ist das so?[/code][/quote]
 

byte

Top Contributor
Code:
String a = "test";

... ist ein literal. dabei erzeugt java nur dann ein neues string objekt, wenn das umbedingt nötig ist.

Code:
String b = "test";

Code:
System.out.println(a == b);     // true

an dieser stelle also nicht. b ist nur eine weitere referenz aufs selbe objekt. daher liefert der vergleich durch == an der stelle true. anders jedoch, wenn du das ganze so machst:

Code:
String a = new String ("test");
String b = new String("test");
System.out.println(a == b);     // false


http://www.galileocomputing.de/open...el_04_000.htm#Rxx365java04000040001241F021106
 
G

Guest

Gast
aha, danke! Also denkt Java bei dieser String-Deklaration sozusagen mit...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben