在检查平等时将字符串转换为Int或Int转换为字符串是否更高效?

时间:2013-08-16 16:56:42

标签: java android

以下设置:

int a=3;
String b="3";

两个变量都表示在语义上相等的ID。由于该应用程序适用于移动设备,因此以尽可能最有效的方式对这些变量进行比较非常重要。

将这些变量与此片段进行比较是否有效,

boolean areEqual = Integer.parseInt(b) == a;

还是这个?

boolean areEqual = String.valueOf(a).equals(b);

3 个答案:

答案 0 :(得分:4)

除非你进行数千次这样的比较,否则可能无关紧要。也就是说,如果你看一下每个陈述的作用:

boolean areEqual = Integer.parseInt(b) == a; 该语句解析String值一次,然后对两个原始int值进行极快速的比较。

boolean areEqual = String.valueOf(a).equals(b); 此语句处理String一次以创建String a值,然后进行String比较。更多步骤,更多内部逻辑,因此效率更低。

答案 1 :(得分:1)

代码的最低效率可能是在每次比较时在int和String之间进行转换。 在第一个位置获取数据时,只需将String从String转换为int即可。这样,您还可以确保任何错误消息立即传达给您的用户,例如:当他/她错误输入输入时。

答案 2 :(得分:1)

如果您确实知道该字符串包含数字,则最有效的方法可能是;

boolean areEqual = (a == (b.charAt(0) - '0'));