Exercise "Representing emoticons. "





  • Hallo,
    wofür steht das u vor dem Hex-Code und wie genau reiht man zwei zwei-Byte-Codes aneinander?



  • Das »u« steht als Abkürzung für Unicode und stellt ein char Literal dar. Der Großbuchstabe »A« beispielsweise hat den dezimalen ASCII Wert 65, bzw. hexadezimal \0x41. Daher sind die folgenden Schreibweisen gleichwertig:

    char c = 'A';              // In diesem Fall der einfachste Weg.
    char c_hex = 0x41;         // 0x0041 geht auch, ist aber derselbe Wert.
    char c_unicode = '\u0041'; // Unicode mit zwei Bytes, daher sind die führenden Nullen notwendig.
    
    System.out.println(c);
    System.out.println(c_hex);
    System.out.println(c_unicode);
    

    Alle drei println(...) Anweisungen erzeugen jeweils die Ausgabe »A«.

    Im Fall des gewöhnlichen Buchstabens »A« ist dies nicht sinnvoll. Allerdings sind Sonderzeichen nicht auf allen Systemen im jeweiligen Font vorhanden. In diesem Fall kann man sich dennoch mit der Unicode Ersatzdarstellung helfen, etwa, falls das Pfeil Zeichen (➽) fehlt.

    Zudem darf diese Unicode Ersatzdarstellung auch in String Literalen verwendet werden:

    System.out.println("HdM Studium");                // Die Zeichenfolge »HdM« hat die ASCII code Werte 72 100 und 77
    
    System.out.println("\u0048\u0064\u004d Studium"); // Beginn als Unicode Hex mit führenden Nullen, dann normal weiter.
    

    Beide println(...) Anweisungen erzeugen die identische Ausgabe »HdM Studium«.

    Zur Frage der Verkettung siehe »UTF-8« in Supplementary Characters in the Java Platform.


Log in to reply