Contents

Java将布尔值转换整数

1. 概述

在本教程中,我们将学习如何将boolean值转换为int值。首先,我们将看看 Java 如何处理这两种原始数据类型 ;然后,我们将探索多种将布尔值转换为整数的方法。

2. 数据类型

在 Java 中,整数可以由int原始数据类型或 Integer包装类 表示。原始数据类型是 32 位有符号整数,由二进制补码 编码方法表示。Integer 类用作包装器,允许您执行无符号整数运算,以及将整数(原始)值视为对象以使用Generics

另一方面,boolean值在内存中没有特定的大小,但它默认为操作系统和Java 虚拟机 (JVM) 。类似地,与 Java 中的所有原始数据类型一样,boolean具有 Boolean 包装类,它允许布尔值表现得像对象。

我们可以利用两种数据类型(booleanint)的原始值和包装类来执行数据转换。假设true和 false布尔值分别代表 1 和 0,我们有多种方法来进行转换。

3. 原始booleanint

要将原始 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;
}

这种方法使用原始数据类型(booleanint)进行转换。结果,当布尔表达式为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方法执行相同的三元运算符来进行转换。