Является ли метод String.charAt () достаточно быстрым, чтобы использовать его снова и снова? - PullRequest
2 голосов
/ 13 января 2020

Поэтому во многих моих программах я использую метод string.charAt() везде, где мне нужно, вместо того, чтобы хранить его в одном символе и использовать этот символ снова и снова. Является ли метод charAt() достаточно быстрым, чтобы разбрасываться повсюду? Вот пример, если вы не поняли, что я сказал:

String importantStr = "Very Important String";

if(importantStr.charAt(5) == 'I') {
    System.out.println(importantStr.charAt(5));
    System.out.println(importantStr.charAt(5) + "Hi");
    /*
    Stuff to do with importantStr.charAt(5);
    */
}

Я не знаю, почему вы хотели бы сделать это, но дело в том, что я звоню importantStr.charAt(5) снова и снова. Сэкономит ли это значительное количество времени, чтобы просто сохранить его в другом персонаже и использовать это?

Ответы [ 2 ]

1 голос
/ 13 января 2020

Чтобы выяснить это, давайте посмотрим на исходный код charAt

public char charAt(int index) {
    if ((index < 0) || (index >= value.length)) {
        throw new StringIndexOutOfBoundsException(index);
    }
    return value[index];
}

value - это char[] и, следовательно, последнее утверждение - O(1). Но есть несколько дополнительных проверок привязки индекса. Но, тем не менее, это операция с постоянным временем, и вы не должны беспокоиться об этом (если только вы не измеряете производительность на уровне наносекунд и не заботитесь о уровне циклов ЦП)

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

0 голосов
/ 13 января 2020

С точки зрения сложности времени, charAt() - это операция с постоянным временем. Таким образом, не должно иметь значения, используете ли вы его напрямую или сохраняете в переменной. Оба дадут O(1) сложность времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...