Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Datentypen"String" == "String" aber Condition greift nicht?!?!?!
Aber auch nur weil der Compiler da schon die Arbeit leistet, oder?Wenn er ein anderes JDK/Java Compiler hat das die Optimierung nicht macht könnte es erklären warum es bei ihm nicht geht. Ich denke das sollte man gar nicht erst zeigen
Hier mal der originalCode. Wenn ich euer Testzeug ausführe klappt es! Is ja auch selbstverständlich; habe ja selbst auch Testcases geschrieben, dort klappt es auch so wie es sein soll...
mit equals muss es gehen..oder sie sind eben nicht gleich....vllt versteckte Zeichen? Leerzeichen etc. ? Hatten wir letztens schon einmal..lasse dir doch mal die Längen der Strings ausgeben o.ä.
tja, die Strings werden eben nicht equal sein, in Log-Ausgaben sieht man z.B. schlecht Leerzeichen wenn du nicht am Ende noch ein Zeichen hinzufügst,
in extremsten Fällen hat man noch Tabs oder verschiedene Chars für gleiche Zeichen,
Strings können sich nicht verstecken, alles ist leicht zu prüfen:
- equals,
- Länge vergleichen
- beide Strings char für char durchlaufen und als int vergleichen
Die Objekte sind eben nicht gleich. dh == vegleicht ob es das gleiche Objekt ist.
equals Vergleicht den Inhalt. (Je nach Objekt selber definiert).
Bei String
-->
"Hallo" == "Hallo" muss nicht true sein (kann aber lassen wir das mal bei Seite)
"Hallo".equals("Hallo") ist hingegen true. Der Inhalt des Objektes wird verglichen (char um char)
oder
"HALLO".equalsIgnoreCase("hallo") ist true. Der Inhalt wird verglichen char um char (gross klein egal)
mit equals muss es gehen..oder sie sind eben nicht gleich....vllt versteckte Zeichen? Leerzeichen etc. ? Hatten wir letztens schon einmal..lasse dir doch mal die Längen der Strings ausgeben o.ä.
Variablen sind immer Zeiger im Zeiger-Sinne, sie zeigen auf Objekte und diese werden verglichen,
wenn es nicht passt dann hat es einen Grund, siehe auch mein vorheriges Posting
hier nochmal die equals-Implementierung
Java:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
kannst dir kopieren und Schritt für Schritt nachprüfen, dann erkennst du, welche chars sich unterscheiden