Вызывается String.length() для окончательной строки?
Быстро, чтобы успокоиться:
Учитывая следующее
final String str = "This is the end";
Является ли str.length() оценен во время выполнения или жестко запрограммирован как 15 в байте-коде?
Ответ 1
str.length() оценивается во время выполнения. final означает, что значение ссылки не может быть изменено. Это не имеет никакого отношения к самой строке.
Однако, если вы посмотрите в исходный код String, вы увидите, что length() возвращает значение поля, поэтому никаких вычислений не происходит, значение os просто читается...