Перейти к основному содержимому

Преобразовать логическое значение в int в Java

· 4 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

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 .