Java, String Großbuchstaben in Kleinbuchstaben umwandeln?
Kann mir jemand sagen warum das nicht funktioniert:
String test1 = "T";
String test2 = "t";
if(test1.toLowerCase()==test2) {
System.out.println("gleich");
}
die if wird nie ausgeführt, obwohl ich mit sehen kann mit debugging, das test1.toLowercase ein kleines t ist.
Die Methode ist ja total sinnlos, wenn sie mir einen gefakten String ausspuckt der nichtmehr vergleichbar ist. Kann dazu aber nix finden.
P.S. Und ja, es muss mit String sein und nicht mit char, hab das Beispiel nur zu vereinfachten Darstellung des Problems genutzt.
3 Antworten
Man vergleicht den Inhalt von Strings nicht mit ==, dafür musst du die .equals-Methode nutzen.
== vergleicht im Falle von Strings (und anderen Objekten) nur, ob es wirklich das gleiche Objekt ist - NICHT, ob der Inhalt gleich ist
bei Java durchaus, nicht aber bei anderen Sprachen.
Jup, aber wie gut, dass die Frage explizit zu Java gestellt wurde
Mit arrays gehts aber schon ?
element = "hello";
if(input[i]==element){
System.out.print(element);
}
Das funktioniert bei mir aber.
Nö, geht nicht. Probier:
String element = "HELLO";
String[] input = {"hello"};
System.out.println(input[0]==element.toLowerCase());
Bei dir gings vermutlich nur, wenn du an beiden Stellen (beim Erstellen des Array-Elements und beim Erstellen der Variable element) = "hello" gemacht hast.
Liest zur Aufklärung
https://javabeginners.de/String/Strings_vergleichen.php
Benutze besser
test1.equals(test2)
oder
test1.equalsIgnoreCase(test2)
Weil man Strings mit .equals() vergleichen muss.
Anzumerken, dass das nicht die Regel ist - bei Java durchaus, nicht aber bei anderen Sprachen.