Java использует UTF-16 для внутреннего текстового представления
Представление для String, StringBuilder и т. Д. В Java - UTF-16
https://docs.oracle.com/javase/8/docs/technotes/guides/intl/overview.html
Как текст представлен на платформе Java?
Язык программирования Java основан на наборе символов Unicode, и несколько библиотек реализуют стандарт Unicode. Примитивный тип данных char в языке программирования Java представляет собой 16-разрядное целое число без знака, которое может представлять кодовую точку Unicode в диапазоне от U + 0000 до U + FFFF или кодовые единицы UTF-16. Различные типы и классы в платформе Java, которые представляют последовательности символов - char [], реализации java.lang.CharSequence (такие как класс String) и реализации java.text.CharacterIterator - являются последовательностями UTF-16.
На уровне JVM, если вы используете -XX:+UseCompressedStrings
(который используется по умолчанию для некоторых обновлений Java 6). Фактическое представление в памяти может быть 8-разрядным, ISO-8859-1, но только для строк, которые не нужна кодировка UTF-16.
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
и поддерживает нестандартную модификацию UTF-8 для сериализации строк.
Сериализованные строки по умолчанию используют UTF-8.
А сколько байтов Java использует для символа в памяти?
A char
- это всегда два байта, если вы игнорируете необходимость заполнения в Object.
Примечание: кодовая точка (которая допускает символ> 65535) может использовать один или два символа, то есть 2 или 4 байта.