1. 概要

このチュートリアルでは、boolean値をint値に変換する方法を学習します。 最初に、Javaがこれら2つのプリミティブデータ型をどのように処理するかを見ていきます。 次に、ブール値を整数に変換する複数の方法を検討します。

2. データ型

Javaでは、整数はintプリミティブデータ型または整数ラッパークラスで表すことができます。 プリミティブデータ型は、 Two’sComplementエンコード方式で表される32ビットの符号付き整数です。 Integerクラスは、符号なし整数演算を実行したり、整数(プリミティブ)値をGenericsで動作するオブジェクトとして処理したりできるラッパーとして機能します。

一方、ブール値はメモリ内で特定のサイズを持ちませんが、デフォルトではオペレーティングシステムと Java仮想マシン(JVM)になります。 同様に、Javaのすべてのプリミティブデータ型と同様に、 boolean には、ブール値をオブジェクトのように動作させるブールラッパークラスがあります。

両方のデータ型(booleanおよびint)のプリミティブ値とラッパークラスを利用して、データ変換を実行できます。 trueおよびfalseブール値がそれぞれ1および0を表すと仮定すると、変換を行うための複数のアプローチがあります。

3. プリミティブbooleanからint

プリミティブを変換するには ブール値 価値 に 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)を使用して変換を行います。 その結果、ブール式が次の場合に1が得られます。 真実。 それ以外の場合、メソッドは0を返します。

4. ラッパークラス

ブールラッパークラスを使用して、変換を行うためのいくつかのアプローチがあります。

  • ブールクラスの静的メソッドを活用できます。
  • ブールオブジェクトから直接メソッドを呼び出すことができます。

4.1. 静的メソッド

ブールクラスには、次のように使用できるcompareメソッドがあります。

public static int booleanObjectToInt(boolean foo) {
    return Boolean.compare(foo, false);
}

静的compareメソッドが0を返すことを思い出してください。両方の引数の値が同じ場合。 言い換えれば、  foo がfalseの場合、比較の結果は0になります。 それ以外の場合、最初の引数が true で、2番目の引数がfalseの場合、関数は1を返します。

同様に、同じ静的メソッドを使用して、2番目の引数をtrueに変更できます。

public static int booleanObjectToIntInverse(boolean foo) { 
    return Boolean.compare(foo, true) + 1;
}

今回は、 foo がtrueの場合、 compare メソッドは同じ値の2つの引数を評価し、結果として0になります。 ただし、結果に1を追加すると、真のブール変数から期待される整数値が返されます。

4.2. ブールクラスオブジェクト

ブールクラスオブジェクトには、compareToなどの関数があります。これらの関数を使用できます。

public static int booleanObjectMethodToInt(Boolean foo) {
    return foo.compareTo(false);
}

メソッドbooleanObjectMethodToIntを使用すると、静的メソッドで行ったのと同じ方法でブール値を整数に変換できます。 同様に、引数を true に変更し、結果に 1 を追加することで、逆バージョンを適用できます。

5. Apache Commons

Apache Commons は、BooleanUtilsなどのユーティリティクラスを提供するJava用の人気のあるオープンソースライブラリです。 次のように、ライブラリを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メソッドは同じ三項演算子を実行して変換を行います。

6. 結論

このチュートリアルでは、ブール値を整数値に変換する方法を学習しました。 true1に変換され、false0に変換されると仮定して、この変換を実現するためにさまざまな実装を検討しました。

いつものように、この記事の完全なコードサンプルは、GitHubにあります。