Почему Java char использует UTF-16?

Недавно я прочитал много вещей о кодах Unicode и о том, как они развивались со временемhttp://www.joelonsoftware.com/articles/Unicode.html это также.

Но что-то я не смог найти настоящую причину, почему Java использует UTF-16 для символа.

Например, если у меня есть строка, которая содержит 1024 буквы строки символов ASCII в области видимости. Это значит1024 * 2 bytes что равно 2KB памяти строки, которую он будет использовать в любом случае.

Таким образом, если базовый символ Java будет UTF-8, это будет всего 1 КБ данных. Даже если в строке есть какой-либо символ, для которого требуется 2 байта, например 10 символов «字», естественно, это увеличит размер потребления памяти.(1014 * 1 byte) + (10 * 2 bytes) = 1KB + 20 bytes

Результат не так очевиден1KB + 20 bytes VS. 2KB Я не говорю об ASCII, но мое любопытство вызывает то, почему это не UTF-8, который просто заботится и о многобайтовых символах. UTF-16 выглядит как пустая трата памяти в любой строке, которая имеет много не многобайтовых символов.

Есть ли веская причина этого?

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

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