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 paraStrings, 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?