8

以下设置:

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

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

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

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

还是用这个?

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

3 回答 3

4

除非您进行数千次此比较,否则这可能无关紧要。也就是说,如果您查看这些语句中的每一个在做什么:

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

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

于 2013-08-16T17:02:33.860 回答
1

您的代码效率最高的地方可能是您在每次比较时都在 int 和 String 之间进行转换。当您首先获取数据时,只需将 String 转换为 int 即可。这样,您还可以确保任何错误消息立即到达您的用户,例如当他/她输入错误时。

于 2013-08-16T18:27:37.787 回答
1

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

boolean areEqual = (a == (b.charAt(0) - '0'));
于 2013-08-16T20:37:17.203 回答