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

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

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

1. Обзор

В этом руководстве мы рассмотрим различные способы использования логического класса Java для преобразования String в логическое значение .

2. Булево значение.parseBoolean()

Boolean.parseBoolean() позволяет нам передать строку и получить примитивное логическое значение .

Во-первых, давайте напишем тест, чтобы увидеть, как parseBoolean() преобразует строку со значением true:

assertThat(Boolean.parseBoolean("true")).isTrue();

Конечно, тест проходит.

На самом деле, семантика parseBoolean() настолько ясна, что IntelliJ IDEA предупреждает нас, что передача строкового литерала «true» избыточна.

Другими словами, этот метод отлично подходит для преобразования String в логическое значение .

3. Булево значение.valueOf()

Boolean.valueOf() также позволяет нам передавать String , но этот метод возвращает экземпляр класса Boolean вместо примитивного boolean .

Мы видим, что этот метод также преуспевает в преобразовании нашей строки:

assertThat(Boolean.valueOf("true")).isTrue();

Этот метод фактически использует parseBoolean() для преобразования строки в фоновом режиме и просто использует результат для возврата статически определенного логического экземпляра.

Следовательно, этот метод следует использовать только в том случае, если требуется возвращаемый логический экземпляр. Если нужен только примитивный результат, более эффективно использовать parseBoolean() напрямую.

4. Логическое.getBoolean()

Boolean.getBoolean() — это третий метод, который принимает строку и возвращает логическое значение .

Не глядя на документацию или реализацию этого метода, можно разумно предположить, что этот метод также предназначен для преобразования аргумента String в логическое значение:

assertThat(Boolean.getBoolean("true")).isTrue(); // this test fails!

Причина, по которой этот тест не проходит, заключается в том, что аргумент String должен представлять имя логического системного свойства.

Определив системное свойство:

System.setProperty("CODING_IS_FUN", "true");
assertThat(Boolean.getBoolean("CODING_IS_FUN")).isTrue();

Наконец, тест проходит. Проверка реализации этого метода показывает, что он также использует метод parseBoolean() для преобразования строки .

Обратите внимание, что getBoolean() буквально является сокращением от parseBoolean(System.getProperty("true")), что означает, что нас не должно вводить в заблуждение название.

Следовательно, единственный способ Boolean.getBoolean("true"); всегда будет возвращать true , если существует системное свойство с именем «true» и его значение преобразуется в true .

4. Вывод

В этом коротком руководстве мы рассмотрели ключевые различия между Boolean.parseBoolean() , Boolean.valueOf() и Boolean.getBoolean() .

Хотя и parseBoolean(), и valueOf() преобразуют String в boolean , важно помнить, что Boolean.getBoolean() этого не делает.

Исходный код со всеми примерами из этого руководства можно найти на Github .