Каково внутреннее представление Java для String? Модифицированный UTF-8? UTF-16?

Я искал внутреннее представление Java для String, но у меня есть два материала, которые выглядят надежными, но несовместимыми.

Один:

http://www.codeguru.com/cpp/misc/misc/multi-lingualsupport/article.php/c10451

и это говорит:

Java использует UTF-16 для внутреннего текстового представления и поддерживает нестандартную модификацию UTF-8 для сериализации строк.

Другой это:

http://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8

и это говорит:

Tcl также использует тот же модифицированный UTF-8 [25], что и Java, для внутреннего представления данных Unicode, но использует строгий CESU-8 для внешних данных.

Модифицированный UTF-8? Или UTF-16? Какой из них правильный? А сколько байтов Java использует для символа в памяти?

Пожалуйста, дайте мне знать, какой из них правильный и сколько байтов он использует.

Ответы на вопрос(6)

Ваш ответ на вопрос