public class StringTest { public static void main(String[] args) { String nachname; // String-Variable nachname = "Hurtig"; nachname = "Meier"; System.out.println(nachname); // Frage: Was ist mit "Hurtig" passiert, und wie kommen wir // wieder dran? // Antwort: Der Speicher wurde freigegeben und ist "weg", // da keine Variable mehr darauf verweist! // "Merken" von Speicher: Zuweisung der Adresse // an eine neue Variable String tmp = nachname; nachname = "Müller"; System.out.println(nachname); System.out.println(tmp); String lange_zeichenkette = "ABCDEFG" + "HIJKLMNOP" + "QRSTUVW" + "XYZ"; System.out.println(lange_zeichenkette); // Besondere Zeichenketten String besonders = "Hallo\nWelt!"; // \n = Zeilenumbruch System.out.println(besonders); besonders = ""; // "" = Leere Zeichenkette System.out.println(besonders); besonders = "\"Hallo, Welt\""; System.out.println(besonders); int i = 100; System.out.println("Zahl i = " + i); // String i_string = i; // Geht nicht! String i_string = "" + i; // Geht! System.out.println(i_string); // Strings vergleichen String a = new String("hallo"); String b = new String("hallo"); System.out.println("Vergleiche String a und String b:"); if(a==b) System.out.println("a und b sind gleich"); else System.out.println("a und b sind unterschiedlich"); // Warum kommt hier "unterschiedlich" heraus? Weil // die in a und b gespeicherten Adressen des ersten // und des zweiten String verschieden sind! // Hier wird jetzt der INHALT der Speicherbereiche verglichen: if(a.equals(b)) System.out.println("Der Inhalt von a und b ist gleich!"); // Kurios: a = "test"; b = "test"; if (a == b) System.out.println("a und b haben die gleiche Adresse"); else System.out.println("a und b haben unterschiedliche Adressen"); // Der Java-Compiler OPTIMIERT hier, und ersetzt unseren Quelltext quasi durch: // a = "test"; b = a; // Test von equalsIgnoreCase a = "HÄLLO WÖRLD"; b = "hällo wörld"; System.out.print("\"" + a + "\" und \"" + b + "\" sind "); if(a.equalsIgnoreCase(b)) System.out.println("gleich"); else System.out.println("ungleich"); // Bei deutschen Umlauten funktioniert es auch, aber nicht für alle // Unicode-Zeichen ist garantiert, dass die Groß- und Kleinschreibweise // richtig erkannt werden! // Längenfunktion System.out.println("\"" + a + "\" ist " + a.length() + " Zeichen lang."); } }