String-Literale in Java
Der inverse Schrägstrich hat in einem Zeichenfolgenliteral eine Sonderbedeutung, zu deren Verständnis die folgende Analyse notwendig ist:
Bei der Analyse eines Zeichenfolgenliterals beginnt man nach dem ersten Anführungszeichen im Grundzustand.
- Zeichenfolgenanalyse
"b\nc"
^
Grundzustand
Nach jedem weiteren Zeichen ist man normalerweise weiterhin im Grundzustand.
- Zeichenfolgenanalyse
"b\nc"
^
Grundzustand
Nach einem inversen Schrägstrich im Grundzustand ist man aber für genau das nächste Zeichen in einem Sonderzustand und für das übernächste Zeichen dann aber wieder im Grundzustand.
- Zeichenfolgenanalyse
"b\nc"
^
Sonderzustand- Zeichenfolgenanalyse
"b\nc"
^
Grundzustand
Im Sonderzustand haben einige Zeichen eine besondere Bedeutung. So bedeutet ein »n« im Sonderzustand das Zeilenvorschubzeichen Code 10.
- Zeichenfolgenliteral
"a\nb"
- Zeichenfolge (wörtliche Interpretation)
a
b- Zeichenfolge (in Java unter einigen Umgebungen übliche Interpretation )
a
bMain.java
public class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "a\nb" ); }}- Konsole (Leerzeile)
a
b
Ein Anführungszeichen »"« im Sonderzustand steht für ein Anführungszeichen in der Zeichenfolge (während das Anführungszeichen im Normalzustand ja das Zeichenfolgenliteral abschließt).
- Zeichenfolgenliteral
"a\"b"
- Zeichenfolge
a"b
Main.java
public class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "a\"b" ); }}- Konsole (Leerzeile)
a"b
Ein inverser Schrägstricht »\« im Sonderzustand steht für einen inversen Schrägstrich in der Zeichenfolge (während der inverse Schrägstrich im Normalzustand ja in den Sonderzustand umschaltet).
- Zeichenfolgenliteral
"a\\b"
- Zeichenfolge
a\b
Main.java
public class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "a\\b" ); }}- Konsole (Leerzeile)
a\b
Das folgende Beispielprogramm zeigt ein Zeichenfolgenliteral im Zusammenhang eines vollständigen Programmes.
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "// /* Anfuehrungszeichen \"\nInverser Schraegstrich \\ */" ); }}System.out
// /* Anfuehrungszeichen "
Inverser Schraegstrich \ */
Die Zeichenpaare, welche sonst einen Kommentar einleiten würden, verlieren diese Sonderbedeutung, wenn sie in einem Zeichenfolgenliteral vorkommen. Daher sind Kommentare innerhalb von Zeichenfolgenliteralen nicht möglich.
Zeilentrennung in Java
Das Zeilenvorschubzeichen »"\n"« ist nicht zum Abschluß einer Zeile geeignet. Obwohl es unter manchen Umgebunden den gewünschten Effekt haben kann, ist dies nicht unter allen Umgebungen garantiert. Das Zeilenvorschubzeichen »"\n"« sollte nur von Experten verwendet werden, die sicher sind, daß sie ein Zeilenvorschubzeichen wünschen. Zum Abschluß einer Zeile sollten statt dessen wie bisher die früher im Kurs behandelten Möglichkeiten verwendet werden.
Übungsaufgaben
/ Zeichenfolge ausgeben
Schreiben Sie ein Programm, das die Zeichenfolge ausgibt, die unter der Überschrift "Text" steht, indem Sie diesen Text mit einem Textliteral notieren. Das Programm soll also eine Zeile mit 18 Zeichen (und nichts anderes) ausgeben.
- Text
"Hallo," sagte er.
/ Programm ausgeben (schwierig)
Schreiben Sie ein Java -Programm, das den Quelltext »Main.java« (der letzte Quelltext vor dieser Übungsaufgabe in dieser Lektion), (vier Zeilen) ausgibt.