Üblicherweise ist ein char 8 Bit groß und kann somit ein Zeichen aus dem Vorrat des ASCII-Code (oder einer vergleichbaren Zeichentabelle) aufnehmen. Java arbeitet intern aber nicht mit einer ASCII- Tabelle, die je nach Ländercode und Plattform anders aussehen könnte. Stattdessen werden alle Zeichen als Unicodes abgebildet. Ein Unicode-Zeichen benötigt 16 Bit Speicherplatz, kann dafür aber mehr als 65.000 Zeichen abbilden. Die Unicode-Zeichentabelle kann deshalb auch besondere Zeichen verschiedenster Sprachräume aufnehmen, während ein länderabhängiger ASCII-Code jeweils nur die landesspezifischen Sonderzeichen (z. B. Umlaute in Deutschland) kennt.