Переменная, которая может иметь только одно из двух значений: true или false, является переменной логического типа, а true и false — прямыми логическими величинами. Вы можете определить логическую переменную с именем state, используя следующий оператор:
логическое состояние=истина
Этот оператор инициализирует состояние переменной с истинным значением. Вы также можете использовать оператор присваивания, чтобы присвоить значение логической переменной. Например, заявление,
состояние = ложь
Установите значение переменной состояния на false.
В настоящее время мы не можем делать ничего большего, чем присваивать значения логическим переменным, но, как вы увидите в следующей главе, логические переменные полезны при принятии решений в программе, особенно когда мы можем использовать выражения для генерации It. более полезен для логических результатов.
Существует несколько операторов, объединяющих логические значения, в том числе: логические AND (AND), логические OR (oR) и логические NOT (которые соответствуют &&, 11 и ! соответственно), а также операторы сравнения, которые выдают логические результаты. Вместо того, чтобы сейчас изучать их в абстрактном виде, мы перейдем к следующей главе, где в упражнениях увидим, как их применять для изменения порядка выполнения программы.
Следует отметить, что логическая переменная отличается от других базовых типов данных. Ее нельзя преобразовать в какой-либо другой базовый тип, а другие базовые типы нельзя преобразовать в логический тип.
Сравнение трех методов генерации логических объектов в Java
Первый распространенный способ, которым Java генерирует логические объекты, — это оператор new.
Логическое значение boolean1 = новое логическое значение (1==1);
Второй — через статический метод valueOf
Boolean boolean1 = Boolean.valueOf(1==1);
Третий тип — автоматический бокс после JDK1.5.
Логическое логическое1 = 1==1;
В чем разница между этими тремя методами?
Давайте сначала посмотрим на фрагмент кода
Boolean[] boolean1 = новый Boolean[100];Boolean[] boolean2 = новый Boolean[100];Boolean[] boolean3 = новый Boolean[100];for (int i = 0; i < 100;i++){ boolean1[i ] = Boolean.valueOf(1==1);}for (int i = 0;i < 100;i++){ boolean2[i] = new Boolean(1==1);}for (int i = 0; i < 100;i++){ boolean3[i] = 1==1;}System.out.println("valueOf: " + String.valueOf(boolean1[1] == boolean1[2]));System.out.println("новое логическое значение: " + String.valueOf(boolean2[1] == boolean2[2]));System.out.println("автоматическое перенос: " + String.valueOf(boolean3[1] == boolean3[2]));
Результат:
valueOf: truenew Логическое значение: falseавтоматическая переноска: true
Почему это происходит?
Причина в том, что логический объект, созданный с помощью new, постоянно создает новый объект экземпляра, в то время как valueOf возвращает статические переменные-члены в классе Boolean и не генерирует большое количество идентичных переменных экземпляра. Автоматическая упаковка аналогична valueOf.
Фактически, документация jdk также рекомендует использовать valueOf вместо new для создания логических объектов класса.