Мне сказали, что такой код:
for (int i = 0; i < x.length(); i++) {
// blah
}
на самом деле O (n ^ 2) из-за повторных вызовов x.length()
. Вместо этого я должен использовать:
int l = x.length();
for (int i = 0; i < l; i++) {
// blah
}
Это правда? Сохраняется ли длина строки как закрытый целочисленный атрибут класса String? Или String.length()
действительно обходит всю строку, только чтобы определить ее длину?