java中的Boolean.valueOf(String)和BooleanUtils.toBoolean(String)?

问题描述 投票:0回答:5

我有一个关于

Boolean.valueOf(String)
BooleanUtils.toBoolean(String)
不同的问题 .

我像代码一样使用我的应用程序

BooleanUtils.toBoolean(defaultInfoRow.getFolderType())
,而不是
Boolean.valueOf(defaultInfoRow.getFolderType())
,两者都工作正常。

我有一些问题

1.哪一个性能更好?

2.哪一个更快?

3.在什么情况下更喜欢

Boolean.valueOf(String)

谢谢

java boolean
5个回答
7
投票

使用对您的应用程序最有意义的 API。当参数是字符串

Boolean.valueOf(String)
时,
true
恰好返回
"true"
BooleanUtils
会将 几个常见的“真”值视为
true
。性能问题很小,无关紧要。


5
投票

你可以忽略性能

BooleanUtils
处理类似
On
True
Yes
Boolean.valueOf()

的情况

1
投票

出于性能考虑,我不会做出任何选择。但是,如果我对使用外部第三部分库(例如 Apache commons lib)有限制,我会坚持使用标准 JDK

Boolean.valueOf(String)
,尽管我在
String
输入的可能值方面失去了一些灵活性 - 请参阅前面的答案。

编辑-这尝试回答OP问题中的第3点


1
投票

每种方法的行为都不同。

因此性能无关紧要。

您应该根据所需的行为进行选择:

当您

想要为等于“
true”(不区分大小写)的输入返回true时,请使用Boolean.valueOf()

当您希望其他输入返回 true(例如“on

”或“
yes”)时,请使用 BooleanUtils.toBoolean()

当您对方法有疑问时,请务必查阅文档:


0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.