В Java есть простой тип, представляющий логические значения, называемый Boolean. Его значение может быть только одним из двух значений: true или false. Все это примерно так: Следующая программа иллюстрирует использование логических типов:
// Демонстрируем логические значения class BoolTest { public static void main(String args[]) { boolean b; b = false; System.out.println("b is " + b); ("b is " + b); // логическое значение может управлять оператором if if(b) System.out.println("Это выполняется."); b = false; System.out.println("Это не выполняется."); // результат реляционного оператора — логическое значение System.out.println("10 > 9 равно " + (10 > 9));
Результаты запуска этой программы следующие:
b — ложь, b — правда. Это выполняется, если 10 > 9 — правда.
В этой программе можно отметить 3 интересных момента. Во-первых, вы видели, что когда вы используете метод println() для вывода логического значения, он отображает «истина» или «ложь». Во-вторых, значения самой логической переменной достаточно для управления оператором if. Нет необходимости писать такие утверждения:
если (б == истина) ...
В-третьих, результатом оператора отношения (например, <) является логическое значение. Вот почему выражение 10>9 отображает «истину». Кроме того, с обеих сторон выражения 10>9 добавляются дополнительные круглые скобки, поскольку оператор со знаком плюс «+» имеет более высокий приоритет, чем оператор «>».
Разница между логическими операциями и побитовыми операциями с логическими типами JAVA
С точки зрения результатов, результаты двух операций одинаковы, но логическая операция будет иметь явление «короткого замыкания», а побитовая операция - нет, и побитовая операция имеет больше функций «исключающее ИЛИ», чем логическая операция.
явление короткого замыкания
класс br { static boolean f1() { return false; } static boolean f2() { return true; } static boolean f3() { return true; ();
Результат — false. Когда f1() имеет значение false, результат последующей операции && известен без необходимости ее выполнения, что повышает производительность.
логическое значение f_2 = br.f2()||br.f1()||br.f3();
Результат — true. Аналогично, f2() — true, и никаких дальнейших операций выполнять не нужно.
Кажется очень удобным и эффективным, но у него все же есть недостатки.
логическое значение f_3 = br.f2()||br.f3()&&br.f1();
Результат становится истинным, что должно быть ложным. Это ошибка, вызванная «коротким замыканием». Если вы хотите получить правильный ответ, вам нужно добавить круглые скобки:
f_3=( br.f2()||br.f3())&&br.f1();
Побитовые операции обеспечивают функциональность XOR, которой нет в логике:
логическое значение f = true^true;
Результат f = ложь;