Java:比较整数和字符串 - 性能
2022-09-02 09:54:34
我有一个字符串和一个int,比方说:和。查看它们是否相同的最快方法是什么,或者(或者有更快的方法吗?)?String str = "12345";
int num = 12345;
str.equals("" + num)
num == Integer.parseInt(str)
我有一个字符串和一个int,比方说:和。查看它们是否相同的最快方法是什么,或者(或者有更快的方法吗?)?String str = "12345";
int num = 12345;
str.equals("" + num)
num == Integer.parseInt(str)
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)
我认为这是比较的更好方法。因为这不是比较整数值的理想方法,而且还会在 String 池中创建不必要的 String 常量对象(这会妨碍性能)。num == Integer.parseInt(str)
str.equals("" + num)