кодировка Java UTF8 - символы, типы строк

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

output:

3
ヨ

Пожалуйста, помогите мне понять это. Попытка понять, как работает кодировка utf8 в Java. Согласно определению java doc char char: The char data type is a single 16-bit Unicode character.

Означает ли это, что тип символа в java может поддерживать только те символы Юникода, которые могут быть представлены 2 байтами и не более того?

В приведенной выше программе количество байтов, выделенных для этой строки, равно 3, но в третьей строке, которая возвращает первый символ (2 байта в java), может содержаться символ длиной 3 байта? действительно смущен здесь?

Любые хорошие ссылки относительно этой концепции в java / general будут очень благодарны.