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

从下面的选项中将String转换为boolean时具有最佳性能。

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

 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); 

这是源,看起来像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")); } 

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

查看Boolean.valueOf("true")Boolean.parseBoolean("true")实现,它们都执行相同的操作(它们都调用toBoolean(s); ),区别在于valueOf返回Boxed类型。