Java: сравнение ints и строк - производительность

У меня есть String и int, скажем: String str = "12345"; и int num = 12345;. Каков самый быстрый способ увидеть, являются ли они одинаковыми, str.equals("" + num) или num == Integer.parseInt(str) (или есть более быстрый способ?)?

Это исходный код Integer.parseInt и String.equals

Ответ 1

num == Integer.parseInt(str) будет быстрее, чем str.equals("" + num)

str.equals("" + num) сначала преобразует num в строку, которая является O (n), где n - число цифр в числе. Затем он снова выполнит конкатенацию строк O (n), а затем, наконец, проведет сравнение строк. Сравнение строк в этом случае будет другим O (n) - n, являющимся числом цифр в числе. Итак, во всех ~ 3 * O (n)

num == Integer.parseInt(str) преобразует строку в целое число, которое равно O (n), где n - число цифр в числе. И тогда целочисленное сравнение - O (1). Итак, просто ~ 1 * O (n)

Подводя итог, оба O (n) - но str.equals("" + num) имеет более высокую константу и, следовательно, медленнее.

Ответ 2

Я думаю, что num == Integer.parseInt(str) - лучший способ сравнения. Потому что str.equals("" + num) это не идеальный способ сравнения целых значений, а также создание ненужных объектов String const в пуле строк (что затрудняет производительность).

Ответ 3

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

int p = 1234;
String Int = "1234";
String string = String.valueOf(p);
System.out.println(string + Int);
System.out.println(string.equals(Int));
code here