codificación java utf8 - char, tipos de cadenas

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
    }
}

salida:

3
ヨ

Por favor ayúdame a entender esto. Intentando entender cómo funciona la codificación utf8 en java. Según la definición de java doc de charchar: El tipo de datos char es un único carácter Unicode de 16 bits.

¿Significa que el tipo de caracteres en java solo puede admitir aquellos caracteres Unicode que pueden representarse con 2 bytes y no más que eso?

En el programa anterior, el número de bytes asignados para esa cadena es 3, pero en la tercera línea que devuelve el primer carácter (2 bytes en java), ¿puede contener un carácter que tenga 3 bytes de longitud? realmente confundido aqui?

Cualquier buena referencia sobre este concepto en java / general sería realmente apreciada.

Respuestas a la pregunta(4)

Su respuesta a la pregunta