我有一个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