以下是设置:
int a=3;
String b="3";
这两个变量代表语义上相等的ID。由于应用程序是为移动设备设计的,因此比较这些变量的效率非常重要。
使用以下代码片段比较这些变量是否有效:
boolean areEqual = Integer.parseInt(b) == a;
还是用这个?
boolean areEqual = String.valueOf(a).equals(b);
除非您进行这种比较数千次,否则可能不会有影响。话虽如此,如果您查看每个语句的执行过程:
boolean areEqual = Integer.parseInt(b) == a;
该语句一次解析String
值,然后快速比较两个原始int
值。
boolean areEqual = String.valueOf(a).equals(b);
该语句处理一个String
,以创建a
的String
值,然后进行String
比较。步骤更多,内部逻辑更多,因此效率较低。
String
对象(稍后将被垃圾回收)。第一个可能没有进行任何分配。 - Thomasboolean areEqual = (a == (b.charAt(0) - '0'));
b
不是整数会发生什么? - nachokk