Stringvergleich

Status
Nicht offen für weitere Antworten.
N

new one

Gast
hi, ich habe gerade mit der equals-Methode von Strings herumgespielt.

String s="hello";
String a="hello"

if(s==a){
print(true}

eigentlich müsste das ja nichts zurückliefern, weil man ja die zeiger überprüft?


wenn ich schreibe

if(s.equals(a){
print true}

müsste true ausgegeben werden.


komischerweise bekomme ich beides mal true zurück. ist da bei java 1.5 etwas geändert worden??
 

semi

Top Contributor
Nein, es war schon immer so. Verlasse dich aber nie darauf.
Dies funktioniert nur deswegen, weil die zwei Variablen im gleichen
Codeabschnitt deklariert wurden. Da sie gleich sind, haben sie die
gleiche Referenz verpasst bekommen.
 

personenkult

Aktives Mitglied
Mit dem Vergleichsoperator == prüfst du, ob 2 Referenzen auf das gleiche Objekt zeigen. Wenn du den Inhalt vergleichen willst, musst du die euqals() Methode benutzen.

Das es hier funktioniert, liegt nur daran (wie semi schon meinte), dass die Variablen den selben Inhalt haben und deshalb die gleiche Referenz bekommen. Das ist bei Strings immer der Fall.
 

mattulla

Bekanntes Mitglied
Wenn du es so machst legst du ganz sicher zei getrennte objekte an:

Code:
String s = new String("hello");
String t = new String("hello");


Hier liefert s==t dann false


Gruss
mattulla
 

semi

Top Contributor
Auch hierbei
Code:
String a = "hello";
String b = "hel"+"lo";
 
B

bygones

Gast
semi hat gesagt.:
Nein, es war schon immer so. Verlasse dich aber nie darauf.
Dies funktioniert nur deswegen, weil die zwei Variablen im gleichen
Codeabschnitt deklariert wurden. Da sie gleich sind, haben sie die
gleiche Referenz verpasst bekommen.
muss sogar nichtmal im selben Codeabschnitt sein.... ;)

achja - nennt sich Stringpool und hätte man in den FAQs auch nachlesen können....
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben