Volledige versie bekijken : [Java] Characters en strings met elkaar vergelijken



Toelly
16 January 2010, 15:21
Hier ben ik weer met een andere vraag :)
Vaak moeten objecten met elkaar vergeleken worden (bijv in een if-else structuur). Voor getallen is dit nooit een probleem. Maar als het gaat om Strings en characters vergelijken, hoe doen jullie dit dan? Want vaak komt het bij mij dan niet uit :S

bedankt :good:

ultddave
16 January 2010, 15:33
Als je bijvoorbeeld dit doet:

String a = "dave";
String b = "dave";

En dan:

if(a == b)
// Doe iets
Else
// Doe iets anders

Dan zal je zien dat hij normaal gezien altijd in de 'Else' komt. Dat komt omdat de "==" operator bij strings, kijkt of beide objecten hetzelfde zijn. En dus niet enkel naar de inhoud.

Daarvoor heb je meestal functies zoals CompareTo of StringCompare. Die functies geven meestal dit terug:
1 = String 1 komt alfabetisch achter String 2
0 = ze zijn hetzelfde
-1 = String 1 komt alfabetisch eerder dan String 2

Er zijn normaal gezien heel veel libraries die string manipulatie mogelijk maken. Reguliere expressies bestaan ook in Java denk ik. ;)

Dit zou wel werken:

if(a.equals(b))
// Doe iets
Else
// Doe iets anders

Of zoiets:

if(a.compareTo(b)==0)
// Hetzelfde

Mvg,
Dave

Fck_
16 January 2010, 15:45
Objecten en strings moet je in java vergelijken met de equals methode zoals Dave zegt ja ;).

Moet je voor compareTo geen packate toevoegen Dave? Java.lang fzo?
Voor .equals moet dit niet weet ik..

Toelly
16 January 2010, 15:47
Tof, bedankt ;)
En geldt hetzelfde om 2 karakters met elkaar te vergelijken?

Fck_
16 January 2010, 16:03
Dus gewoon 2 simpele karakters ?
Dat is ook met .equals ja .
(Zo doe ik het toch altijd..)

Toelly
16 January 2010, 16:33
Heb juist een OXO spel gemaakt waar ik characters gewoon vergelijk dmv == , dus blijkbaar werkt dat wel voor characters (letters en tekens) :)
Voor characters kan je equals toch niet gebruiken, want dat is toch een methode van String? Dan zou je je char's altijd moeten converten naar een string om dat te controleren :P

Fck_
16 January 2010, 16:45
Oh. Daar had ik eerlijk gezegd helemaal nog niet aan gedacht ;$.
Sorry!

ultddave
16 January 2010, 16:54
Bij karakters mag je gewoon == gebruiken. ;)

Mvg,
Dave

carl
16 January 2010, 22:15
Je kan een string en een character niet vergelijken (appelen en peren). Je moet eerst de character omzetten naar een string, of omgekeerd.
Bij strings geen == gebruiken omdat hij dan zal controleren of dat identiek dezelfde instantie van een object is.

Toelly
16 January 2010, 23:24
Ik wilde ook geen Strings met characters vergelijken. Het ging om Strings met Strings en chars met chars :)

Toelly
21 January 2010, 14:16
Nu mijn examen informatica achter de rug is, mag hier een slotje op :)