我有一个关于
Boolean.valueOf(String)
和 BooleanUtils.toBoolean(String)
不同的问题
.
我像代码一样使用我的应用程序
BooleanUtils.toBoolean(defaultInfoRow.getFolderType())
,而不是Boolean.valueOf(defaultInfoRow.getFolderType())
,两者都工作正常。
我有一些问题
1.哪一个性能更好?
2.哪一个更快?
3.在什么情况下更喜欢
Boolean.valueOf(String)
?
谢谢
使用对您的应用程序最有意义的 API。当参数是字符串
Boolean.valueOf(String)
时,true
恰好返回 "true"
。 BooleanUtils
会将 几个常见的“真”值视为 true
。性能问题很小,无关紧要。
出于性能考虑,我不会做出任何选择。但是,如果我对使用外部第三部分库(例如 Apache commons lib)有限制,我会坚持使用标准 JDK
Boolean.valueOf(String)
,尽管我在 String
输入的可能值方面失去了一些灵活性 - 请参阅前面的答案。
编辑-这尝试回答OP问题中的第3点
Apache 公共文档说方法
public static boolean toBoolean(String str)
的执行速度比 Boolean.valueOf(String) 快 4 倍 (JDK1.4)。
不确定情况是否仍然如此。
此外
public static boolean toBoolean(String str)
支持各种选项。
BooleanUtils.toBoolean(null) = false
BooleanUtils.toBoolean("true") = true
BooleanUtils.toBoolean("TRUE") = true
BooleanUtils.toBoolean("tRUe") = true
BooleanUtils.toBoolean("on") = true
BooleanUtils.toBoolean("yes") = true
BooleanUtils.toBoolean("false") = false
BooleanUtils.toBoolean("x gti") = false
BooleanUtils.toBoolean("y") = true
BooleanUtils.toBoolean("n") = false
BooleanUtils.toBoolean("t") = true
BooleanUtils.toBoolean("f") = false