4

从以下选项将字符串转换为布尔值时性能最佳。

  1. boolean value = new Boolean("true").booleanValue();
  2. boolean value = Boolean.valueOf("true");
  3. boolean value = Boolean.parseBoolean("true");
4

3 回答 3

19
boolean value = new Boolean("true").booleanValue();

最糟糕的是,一直在创建新Boolean对象。顺便说一句booleanValue(),没有必要,拆箱将为您完成。

boolean value = Boolean.valueOf("true");

更好的是,使用缓存Boolean实例,但执行不必要的(虽然非常便宜)拆箱。

boolean value = Boolean.parseBoolean("true");

最好,没有任何浪费,几乎不使用原语,不涉及内存分配。顺便说一句,他们都委托给(Sun/Oracle):

private static boolean toBoolean(String name) { 
  return ((name != null) && name.equalsIgnoreCase("true"));
}

如果您是偏执狂,您可以创建自己的toBoolean(String name)不忽略案例 - 速度快得可以忽略不计:

boolean value = "true".equals(yourString);
于 2012-08-20T20:38:45.323 回答
3

这是来源,看起来 Tomasz 击败了我来回答原因:

public static Boolean valueOf(String s) {
return toBoolean(s) ? TRUE : FALSE;
}
public static boolean parseBoolean(String s) {
    return toBoolean(s);
}
public Boolean(String s) {
this(toBoolean(s));
}
private static boolean toBoolean(String name) { 
return ((name != null) && name.equalsIgnoreCase("true"));
}
于 2012-08-20T20:40:26.680 回答
2

第二个和第三个是最好的选择,因为它们是静态工厂方法并且在内部可以重用引用。

查看Boolean.valueOf("true")Boolean.parseBoolean("true")实现它们都做相同的事情(它们都调用toBoolean(s);),不同之处在于valueOf返回 Boxed 类型。

于 2012-08-20T20:39:14.050 回答