Como o Java armazena caracteres UTF-16 em seu tipo char de 16 bits?
De acordo comEspecificação do Java SE 7Java usa o padrão Unicode UTF-16 para representar caracteres. Ao imaginar umaString
como ummatriz simples de variáveis de 16 bits, cada uma contendo um caractere, a vida é simples.
Infelizmente, existem pontos de código para os quais 16 bits simplesmente não são suficientes (acredito que foram 16/17 de todos os caracteres Unicode). Então em umString
, isso não representa um problema direto, porque ao querer armazenar um desses ~ 1.048.576 caracteres usando umdois bytes adicionais, simplesmente duas posições de array nesseString
seria usado.
Isso sem colocar qualquerdireto problema, trabalha paraString
s, porque sempre pode haver dois bytes adicionais. Embora quando se trata de variáveis individuais que, em contraste com a codificação UTF-16,comprimento fixo de 16 bits, como esses caracteres podem ser armazenados e, em particular, como o Java faz isso com seusTipo "char" de 2 bytes?