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



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

这是Integer的源代码。

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

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

我猜你也可以用这个来比较........

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

最新更新