字符串到布尔值转换的最佳性能

时间:2012-08-20 20:34:05

标签: java

从下面的选项中将String转换为布尔值时,其性能最佳。

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

3 个答案:

答案 0 :(得分:16)

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

最糟糕的是,始终创建新的Boolean个对象。 BTW booleanValue()不是必需的,拆箱将为您完成。

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

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

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

最好,什么都不浪费,几乎没有原始操作,没有涉及内存分配。 BTW所有人都委托给(Sun / Oracle):

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

如果你是偏执狂,你可以创建自己的toBoolean(String name)而不是忽略的情况 - 可以忽略不计:

boolean value = "true".equals(yourString);

答案 1 :(得分: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"));
}

答案 2 :(得分:2)

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

查看Boolean.valueOf("true")Boolean.parseBoolean("true")个实现,他们都做同样的事情(他们都调用toBoolean(s);),区别在于valueOf返回Boxed类型。