1. Обзор
В этом уроке мы узнаем, как преобразовать логическое
значение в значение int
. Во-первых, мы рассмотрим, как Java обрабатывает эти два примитивных типа данных ; затем мы рассмотрим несколько способов преобразования логического значения в целое число.
2. Типы данных
В Java целое число может быть представлено примитивным типом данных int или
классом-оболочкой Integer . Примитивный тип данных представляет собой 32-разрядное целое число со знаком, представленное методом кодирования с дополнением до двух . Класс Integer служит оболочкой, которая позволяет выполнять операции с целыми числами без знака, а также обрабатывать целые (примитивные) значения как объекты для работы с Generics .
С другой стороны, логические
значения не имеют определенного размера в памяти, но по умолчанию они соответствуют операционной системе и виртуальной машине Java (JVM) . Точно так же, как и у всех примитивных типов данных в Java, у boolean
есть класс-оболочка Boolean, который позволяет логическим значениям вести себя как объекты.
Мы можем использовать примитивное значение и класс-оболочку обоих типов данных ( boolean
и int
) для выполнения преобразования данных. Предполагая, что истинные
и ложные
логические значения представляют 1 и 0 соответственно, у нас есть несколько подходов к преобразованию.
3. Примитивное логическое значение
в 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. Класс-оболочка
Используя класс-оболочку Boolean, у нас есть несколько подходов к преобразованию:
- Мы можем использовать
статические
методы класса Boolean. - Мы можем вызывать методы непосредственно из логического объекта.
4.1. Статические методы
Класс Boolean имеет метод сравнения
, который мы можем использовать следующим образом:
public static int booleanObjectToInt(boolean foo) {
return Boolean.compare(foo, false);
}
Напомним, что метод статического сравнения
возвращает 0
, если оба аргумента имеют одинаковое значение. Другими словами, если foo
ложно, результатом сравнения будет 0
. В противном случае функция возвращает 1
, когда первый аргумент истинен
, а второй аргумент ложен.
Точно так же мы можем использовать тот же статический метод, изменив второй аргумент на true
:
public static int booleanObjectToIntInverse(boolean foo) {
return Boolean.compare(foo, true) + 1;
}
На этот раз, если foo
истинно, метод сравнения
оценивает два аргумента с одинаковым значением, что приводит к 0
. Однако добавление 1 к результату вернет ожидаемое целочисленное значение из истинной логической переменной.
4.2. Логический объект класса
Объект класса Boolean имеет такие функции, как compareTo
, которые мы можем использовать:
public static int booleanObjectMethodToInt(Boolean foo) {
return foo.compareTo(false);
}
Используя метод booleanObjectMethodToInt
, мы можем преобразовать логическое значение в целое число так же, как и со статическим методом. Точно так же вы можете применить обратную версию, изменив аргумент на true
и добавив 1
к результату.
5. Апач Коммонс
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
выполняет тот же тернарный оператор для выполнения преобразования.
6. Заключение
В этом уроке мы узнали, как преобразовать логическое значение в целое число. Предполагая, что true
преобразуется в 1
, а false
— в 0
, мы исследовали различные реализации для достижения этого преобразования.
Как всегда, полные примеры кода для этой статьи можно найти на GitHub .