Um ein Zeichen darzustellen werden verschiedene Codierungen verwendet. Zu den populärsten zählen wohl Unicode und ASCII. Was es mit diesen Codierungen auf sich hat und was diese mit chars zu tun haben, erfahren Sie in diesem Kapitel.
ASCII
Der „American Standard Code for Information Interchange“ ist eine 7-Bit-Zeichenkodierung. Dabei entsprechen die Zahlen 0-127 einem bestimmten Zeichen. Die 65 steht z. B. für ein großes ‚A‘. Später wurde der ASCII-Code erweitert, so dass die Zahlen 0-255 für Zeichen verwendet werden können. Ein Zeichen im ASCII-Code ist also immer ein Byte groß. Welches Zeichen durch welche Zahl repräsentiert wird, kann aus so genannten ASCII-Tabellen entnommen werden.
Unicode
Im Unicode werden international alle Zeichen bzw. Textelemente in Form einer bestimmten Zahlenfolge gespeichert. In Java können diese Zeichen über den zugeordneten, hexadezimalen Key angesprochen werden. Dabei steht z. B. ein \u0061 für ein kleines ‚a‘. In dezimaler Schreibweise wäre das die 97 oder zur Darstellung in HTML ein a. Weiterführende Informationen zum Unicode finden Sie hier.
ASCII und chars
Sie müssen einem char nicht direkt ein Zeichen zuordnen, sondern können auch einen ASCII-Code als char verwenden, sofern dieser im Bereich von 0-127 liegt.
char a = 65; System.out.println(a); // A
Es besteht natürlich auch die Möglichkeit, einen Integer als char auszugeben. Hierzu müssen Sie Ihren Integer einfach in ein char wandeln.
int i = 65; System.out.println((char)i);
Mit diesem Hintergrundwissen ist es selbstverständlich ein leichtes anhand der ASCII-Tabelle z. B. das Alphabet auszugeben (65-90):
for (int i = 65; i < 91; i++) {
System.out.print((char)i + " ");
}
Unicode in Java
Ähnlich wie bei ASCII-Code, kann auch anstelle einer direkten Eingabe des gewünschten Zeichens der entsprechende Unicode im char angegeben werden. Dazu ist oben genannte, hexadezimale Form notwendig:
char ch = '\u0061';
System.out.println(ch);
System.out.println("\u0061");
Aber Unicode kann nicht nur als Zeichen verwendet werden, sondern auch beliebig im Java Code. Bei diesem Beispiel wurden alle ‚a’s durch den entsprechenden Unicode ersetzt, und die Variable einmal mit ihrem „normalen“ Zeichen und einmal durch den Unicode angesprochen.
public cl\u0061ss Test {
public st\u0061tic void m\u0061in(String[] \u0061rgs) {
ch\u0061r \u0061 = '\u0061';
System.out.println(a);
System.out.println(\u0061);
}
}
Oder ganz extrem (alles in eine Zeile schreiben, unter Test.java und ohne Package abspeichern, kompilieren und ausführen):
\u0070\u0075\u0062\u006C\u0069\u0063\u0020\u0063\u006C\u0061\u0073\u0073\u0020\u0054\u0065\u0073\u0074\u0020\u007B\u000A\u0070\u0075\u0062\u006C\u0069\u0063\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0076\u006F\u0069\u0064\u0020\u006D\u0061\u0069\u006E\u0028\u0053\u0074\u0072\u0069\u006E\u0067\u005B\u005D\u0020\u0061\u0072\u0067\u0073\u0029\u0020\u007B\u000A\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u006C\u006E\u0028\u0022\u0048\u0061\u006C\u006C\u006F\u0020\u0057\u0065\u006C\u0074\u0022\u0029\u003B\u000A\u007D\u000A\u007D
