Java

Помогите разобрать программу java

Почему str1.length() равняется 45, если там 23 символа
у меня 23 выводит...

кто-то срисовал код с буржуйского источника, и перевёл на русский больше чем нужно было, но потом протупил и даже не попытался запустить этот код...

6 сек хватило чтобы найти оригинальный код
здесь
https://github.com/wolvesled/JavaBeginnerStudy/blob/master/StrOps.java
фраза там такая

When it comes to Web programming. Java is #1.

аккурат 45 символов
но и в этом случае составляли код тоже "граматеи хреновы"...
после слова programming должна быть запятая...
ИI
Игорь I
50 720
Лучший ответ
Дмитрий Громов это официальная книга "java 8 Руководство для начинающих"))
ладно, видимо у них тоже бывает, спасибо
Utf8 русские буквы 2 байта
Дмитрий Громов так, а 23*2 будет 46 же, почему 45 тогда
Есть разные виды кодировки. Одни из них: Аски и Юникод.
Аски позволяет кодировать 256 символов. Для этого ему нужен всего один байт (8 бит), которое может представлять число от 0 до 255. Так как числовой диапазон маленький, оно может свободно закодировать все буквы латинского алфавита, числа (0-9) и некоторые другие символы. Разумеется она не может закодировать буквы всех алфавитов мира!
Юникод может кодировать аж 65526 символов. Для этого ему нужно целых два байта! Он свободно может закодировать буквы большинства алфавитов мира, а также некоторое множество специальных символов. Разумеется она не может закодировать все китайские иероглифы!

Вы можете придумать свою кодировку! Но для этого вам не хватит двух байт. Не проблема — берите три байта, с помощью которого можно закодировать аж 16777216 символов.
Рекомендую начать перечисление всех иероглифов на листах, потом перенести это в красивой форме в компьютер. Думаю за вашу оставшуюся жизнь вы сумеете завершить работу! ;)