字符串对象转换为布尔值

5

当我尝试将一个字符串对象转换为布尔值时,结果是不同的。

String strFlag="true";
boolean boolFlag = Boolean.getBoolean(strFlag);

boolFlag 最终的值将会是 false


6
Boolean.getBoolean并不如你想象的那样工作。请阅读手册。 - Corbin
1
我不确定,但也许它是区分大小写的吗?顺便问一下,为什么不使用 Boolean.parseBoolean(string); 呢? - Leri
3
翻译:@PLB 猜测没什么用,尤其是像这样错误的猜测。 OP 应该按建议阅读手册,你也应该这样做。 - user207421
是的,它没有起作用。 - Mdhar9e
7个回答

10

使用Boolean.valueOf

boolean boolFlag = Boolean.valueOf(strFlag);

该方法返回一个布尔值,该布尔值由指定的字符串表示。如果字符串参数不为null并且与字符串"true"(忽略大小写)相等,则返回的布尔值代表true。


使用内置函数比我的解决方案更好。+1 - devsnd
如果你正在存储一个原始类型,那么解析会非常、非常轻微地更快(因为它避免了拆箱),但是那个时间将被解析时间所淹没,所以这不是问题。 - user439407
是的,它返回包装类的 Boolean 对象。但不是 boolean 变量。 - Mdhar9e
1
@mdhar9e 是的,但Java会将其“拆箱”,因此很难确定它是什么。 - Sergey Kalinichenko
没错,你说得对。这是Java 1.5的特性。但我们正在使用Java 1.4。 - Mdhar9e

8

使用Boolean.valueOf(String string)方法可以实现你的目标。

boolean boolFlag = Boolean.valueOf(strFlag);

返回一个布尔值,该值由指定的字符串表示。如果字符串参数不为null且等于"true"(忽略大小写),则返回代表true的布尔值。
示例:Boolean.valueOf("True") 返回 true。
示例:Boolean.valueOf("yes") 返回 false。
自Java 1.5以来,还有Boolean.parseBoolean(String s)方法,它返回原始类型boolean而不是装箱类型Boolean,以在大多数情况下节省一些CPU周期。

如果 strFlag 包含 false 值,怎么办? - Mdhar9e
1
如果boolFlag为false。由于布尔值只能为true或false,因此只需检查其中一个,具体取决于应该是什么“默认”值。对于包装器类型 Boolean,您是正确的,因为它可以变成 null - devsnd
1
或者只需使用boolean boolFlag =“true”。equalsIgnoreCase(strFlag); - Jesper
那只是很丑陋的,使用正确的API,就像dasblinkenlight回答的那样。 - Peter
我也推荐了他的答案。我现在会更改我的答案,因为这可能是一个查找它的地方。 - devsnd

4

Boolean.getBoolean 用于测试给定的系统属性是否为 true,您需要使用 Boolean.parseBoolean


3

您可以使用

boolFlag = "true".equalsIgnoreCase(strFlag);

2
如果strFlag为null,这将导致您得到一个NullPointerException - devsnd

3

使用Boolean.parseBoolean方法。

boolean boolFlag = Boolean.parseBoolean(strFlag);

这个方法返回一个布尔值(boolean)原始类型。它与 Boolean.valueOf 方法的作用相同,但不需要解包的成本。

3

Try to use Boolean.valueOf(strFlag)


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接