Java:比较整数和字符串 - 性能

时间:2013-04-13 05:31:35

标签: java performance comparison parseint

我有一个String和一个int,让我们说:String str = "12345";int num = 12345;。查看它们是否相同的最快方法是str.equals("" + num)还是num == Integer.parseInt(str)(或者有更快的方法吗?)?

这是Integer.parseIntString.equals

的源代码

3 个答案:

答案 0 :(得分:14)

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)具有更高的常数,因此更慢。

答案 1 :(得分:5)

我认为num == Integer.parseInt(str)是进行比较的更好方法。因为str.equals("" + num)这不是比较整数值的理想方式,而且它会在字符串池中创建不必要的String常量对象(这会妨碍性能)。

答案 2 :(得分:2)

猜猜你也可以用它来比较........

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