Hi alle... ich mache gerade einen Java-Kurs und habe folgende Aufgabe vor mir:
In diesem Beispiel beschäftigen wir uns mit den Eigenheiten von Zeichenketten
(Strings). Gehe zuerst am Papier theoretisch durch, welchen Wert die einzelnen
testStrings–Tests haben (also ob sie true oder false ausgeben). Dann führe den Code
aus und vergleiche jeden einzelnen Test. Was fällt auf? Erkläre das Verhalten schriftlich!
Ich habe das Programm schon laufen lassen. In allen Fällen gilt Gleichheit; nur im ersten und vierten haben wir Identität, sonst nicht. Aber ich verstehe im ersten Falle noch nicht, warum. Zuerst habe ich doch zwei verschiedene Strings s1 und s2 definiert. Das sind doch zwei verschiedene Objekte, und nicht dasselbe?
In diesem Beispiel beschäftigen wir uns mit den Eigenheiten von Zeichenketten
(Strings). Gehe zuerst am Papier theoretisch durch, welchen Wert die einzelnen
testStrings–Tests haben (also ob sie true oder false ausgeben). Dann führe den Code
aus und vergleiche jeden einzelnen Test. Was fällt auf? Erkläre das Verhalten schriftlich!
Java:
public class Aufgabe15 {
public static void main(String... args) {
String s1 = "xyz";
String s2 = "xyz";
testStrings(s1,s2);
s2 = new String(s2);
testStrings(s1,s2);
s2 = "x";
s2 += "yz";
testStrings(s1,s2);
s1 = s1.intern();
s2 = s2.intern();
testStrings(s1,s2);
}
static void testStrings ( final String a, final String b) {
System.out.printf ("<%s>.equals(<%s>) -> %s\n" , a, b, a. equals (b) ) ;
System.out.printf ("<%s> == <%s> -> %s\n\n" , a, b, a == b) ;
}
}
Ich habe das Programm schon laufen lassen. In allen Fällen gilt Gleichheit; nur im ersten und vierten haben wir Identität, sonst nicht. Aber ich verstehe im ersten Falle noch nicht, warum. Zuerst habe ich doch zwei verschiedene Strings s1 und s2 definiert. Das sind doch zwei verschiedene Objekte, und nicht dasselbe?