Java将布尔值转换整数
1. 概述
在本教程中,我们将学习如何将boolean值转换为int值。首先,我们将看看 Java 如何处理这两种原始数据类型 ;然后,我们将探索多种将布尔值转换为整数的方法。
2. 数据类型
在 Java 中,整数可以由int原始数据类型或 Integer包装类 表示。原始数据类型是 32 位有符号整数,由二进制补码 编码方法表示。Integer 类用作包装器,允许您执行无符号整数运算,以及将整数(原始)值视为对象以使用Generics 。
另一方面,boolean值在内存中没有特定的大小,但它默认为操作系统和Java 虚拟机 (JVM) 。类似地,与 Java 中的所有原始数据类型一样,boolean具有 Boolean 包装类,它允许布尔值表现得像对象。
我们可以利用两种数据类型(boolean和int)的原始值和包装类来执行数据转换。假设true和 false布尔值分别代表 1 和 0,我们有多种方法来进行转换。
3. 原始boolean到int
要将原始 boolean值 转换为 int,我们评估表达式的条件以确定我们想要返回的整数:
public int booleanPrimitiveToInt(boolean foo) {
int bar = 0;
if (foo) {
bar = 1;
}
return bar;
}
我们可以通过使用三元运算符来简化这个函数:
public int booleanPrimitiveToIntTernary(boolean foo) {
return (foo) ? 1 : 0;
}
这种方法使用原始数据类型(boolean和int)进行转换。结果,当布尔表达式为true时,我们得到 1*。否则,该方法返回 0。
4. Boolean类
使用Boolean类,我们有几种方法来进行转换:
- 我们可以利用布尔类中的static方法。
- 我们可以直接从布尔对象调用方法。
4.1. 静态方法
Boolean 类有一个compare方法,我们可以使用如下:
public static int booleanObjectToInt(boolean foo) {
return Boolean.compare(foo, false);
}
回想一下,如果两个参数具有相同的值,则静态compare方法返回0。换句话说,当foo 为 false 时,比较结果为0。否则, 当第一个参数为true而第二个参数为假时,函数返回1。
同样,我们可以使用相同的静态方法,将第二个参数更改为true:
public static int booleanObjectToIntInverse(boolean foo) {
return Boolean.compare(foo, true) + 1;
}
这一次,如果 foo为真,则 compare方法评估两个具有相同值的参数,结果为0。但是,将 1 加到结果中会从一个真实的布尔变量返回预期的整数值。
4.2. 布尔类对象
Boolean 类对象具有 我们可以使用的compareTo等函数:
public static int booleanObjectMethodToInt(Boolean foo) {
return foo.compareTo(false);
}
使用方法 booleanObjectMethodToInt,我们可以像使用静态方法一样将布尔值转换为整数。同样,您可以通过将参数更改为true并将结果加1来应用反转版本。
5. Apache Commons
Apache Commons 是一个流行的 Java 开源库,它提供实用程序类,例如BooleanUtils。我们可以将库添加为 Maven 中的依赖项,如下所示:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
一旦库在我们的 pom.xml 文件中,我们可以使用 BooleanUtils类将布尔值转换为整数:
public static int booleanUtilsToInt(Boolean foo) {
return BooleanUtils.toInteger(foo);
}
与示例方法booleanPrimitiveToIntTernary一样,在内部,toInteger方法执行相同的三元运算符来进行转换。