Javaschubla.de - Java als erste Programmiersprache
Strings (Zeichenketten) beginnen und enden mit Anführungszeichen:
System.out.println("Hallo Welt!"); System.out.println("abc");
Was macht man, wenn man Anführungszeichen ausgeben will? Man "escaped" (maskiert) sie mit einem Backslash (\) davor:
System.out.println("Er sagte: \"Guten Tag!\"");
Am Ende stehen zwei Anführungszeichen. Das erste ist mit dem Backslash escaped, wird also ausgegeben. Das zweite ist das Ende des Strings.
Das Escapen benutzt man auch, wenn man Zeichen ausgeben will, die man nicht direkt eingeben kann, z.B. Zeilenumbrüche und Tabulatoren. Für Zeilenumbrüche benutzt man \n für "newline" (oder \r oder \r\n), für Tabulatoren \t.
System.out.println("Hallo\nWelt");
gibt
Hallo Welt
aus.
System.out.println("Geboren:\t1980"); System.out.println("Einschulung:\t1987"); System.out.println("Abitur:\t2001"); System.out.println("Weltherrschaft:\t2013");
gibt die Daten relativ ordentlich untereinander aus (nur Abitur ist zu kurz):
Geboren: 1980 Einschulung: 1987 Abitur: 2001 Weltherrschaft: 2013
Und was schreibt man, wenn man einen Backslash ausgeben will? Man escaped diesen Backslash mit einem Backslash, schreibt also \\.
System.out.println("C:\\Windows");
gibt
C:\Windows
aus.
Merke:
\t | Tabulator |
\n | Zeilenumbruch (Newline) |
\" | " |
\\ | \ |
Strings "konkatenieren" (concat) bedeutet einfach nur "aneinanderhängen". Dafür wird das Pluszeichen verwendet.
System.out.println("Hallo" + "Welt!");
gibt HalloWelt! aus. Die Leerzeichen um das Plus sind außerhalb der Anführungszeichen, werden also nicht mit ausgeben.
System.out.println("Hallo"+"Welt!");
gibt genau dasselbe aus, die Leerzeichen um das Plus sind optional.
System.out.println("Hallo " + "Welt!");
gibt Hallo Welt! aus.
Wozu soll das gut sein? Z.B. wenn ein String zu lang ist und nicht auf eine Zeile passt, kann man ihn so auf der nächsten Zeile fortsetzen.
System.out.println("Es war einmal vor langer langer langer langer langer " +"wirklich sehr sehr langer Zeit, als ...");
Man müsste den zweiten Teil nicht unbedingt so weit einrücken, das ist nur für die Übersichtlichkeit.
Das Plus ist der einzige "überladene" Operator in Java, das heißt die Bedeutung ändert sich, jenachdem zwischen welchen Typen er steht. Zwischen zwei Zahlen bedeutet es Addition, zwischen zwei Strings bedeutet es Konkatenation (Aneinanderhängen).
System.out.println(1+2); System.out.println("1"+"2");
Die erste Zeile gibt 3 aus, die zweite 12, denn in der zweiten Zeile werden nicht die Zahlen 1 und 2 addiert, sondern die Strings 1 und 2 aneinander gehängt (konkateniert).
Und was geschieht, wenn das eine eine Zahl und das andere ein String ist? Dann wird die Zahl automatisch in einen String umgewandelt und sie werden aneinandergehängt.
System.out.println(1 + "abc"); System.out.println("abc" + 1); System.out.println(1 + "2"); System.out.println("1" + 2);
Gibt untereinander 1abc, abc1, 12 und nochmal 12 aus.
Vielleicht versucht du nun, das sinnvoll einzusetzen:
System.out.println("Das Ergebnis von 12345+34567 ist " + 12345+34567);
Nur gibt das ärgerlicherweise Das Ergebnis von 12345+34567 ist 1234534567 aus, statt die Summe zu berechnen. Das liegt daran, dass zuerst ein String kommt, dann wird die Zahl 12345 in den String "12345" umgewandelt und an ihn angehängt und anschließend wird die Zahl 34567 in den String 34567 umgewandelt und ebenfalls angehängt. Das kann man durch Klammern einfach verhindern:
System.out.println("Das Ergebnis von 12345+34567 ist " + (12345+34567));
gibt wie gewünscht
Das Ergebnis von 12345+34567 ist 46912
aus. Wahrscheinlich möchte man noch einen Punkt am Ende:
System.out.println("Das Ergebnis von 12345+34567 ist " + (12345+34567) + ".");
Wenn zuerst Zahlen kommen, werden diese addiert, so lange bis ein String auftaucht:
System.out.println(1+2+"abc"+3+4);
gibt
3abc34
aus.
Probiere diese Sachen aus!
Im nächsten Kapitel wird ein grafisches Programm gezeigt, nur um mal zu sehen, dass das in Java geht.