Почему при получении количества элементов определяющих размер массива мы используем array.length, а при получении количества элементов строки используется метод str.length()?
Почему именно так?
В строке мы не можем четко сказать какой реальный размер строки. Для этого используется метод, в котором и подсчитывается длина строки. В массиве же при его создании мы указываем количество элементов. Это количество переменных сохраняется в публичное финальное поле length
Если посмотреть глубоко в метод length():
/**
* Returns the length of this string.
* The length is equal to the number of <a href="Character.html#unicode">Unicode
* code units</a> in the string.
*
* @return the length of the sequence of characters represented by this
* object.
*/
public int length() {
return value.length >> coder();
}
Зайдем теперь в метод coder()
byte coder() {
return COMPACT_STRINGS ? coder : UTF16;
}
JAVA 9 принесла нам концепцию компактных строк. COMPACT_STRINGS - это компактная строка , если да то возвращаем coder(по умолчанию 0), иначе строка не сжатая и мы возвращаем UTF16(1). 0 и 1 используется для сдвига.
Если допустим value.length вернет нам 7 - а строка у нас не сжата, то будет выполнен сдвиг битов на 1. В итоге длина строки получится не 7, а 3.
БОЛЕЕ ПОДРОБНО СМ. ЗДЕСЬ baeldung.com/java-9-compact-string
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости