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