java utf8 encoding - char, tipos de string

public class UTF8 {
    public static void main(String[] args){
        String s = "ヨ"; //0xFF6E
        System.out.println(s.getBytes().length);//length of the string
        System.out.println(s.charAt(0));//first character in the string
    }
}

saída:

3
ヨ

Por favor me ajude a entender isso. Tentando entender como a codificação utf8 funciona em java. Como por definição de doc java de charchar: o tipo de dados char é um único caractere Unicode de 16 bits.

Isso significa que o tipo char em java só pode suportar os caracteres unicode que podem ser representados com 2 bytes e não mais que isso?

No programa acima, o número de bytes alocados para essa string é 3, mas na terceira linha que retorna o primeiro caractere (2 bytes em java) pode conter um caractere com 3 bytes de comprimento? realmente confuso aqui?

Quaisquer boas referências sobre este conceito em java / geral seriam muito apreciadas.

questionAnswers(4)

yourAnswerToTheQuestion