Тип данных boolean и логические операторы — введение в Java #007

Boolean в Java

Boolean в Java — это логический тип данных. переменная типа boolean может принимать всего два значения правда или ложь — true & false. Эти два значения обозначаются и выдаются на экран часто как 1 и 0, но всё же не равны этим значениям.
boolean b = 0;   // приведёт к ошибке при компиляции программы
скорее мы можем сравнить переменные или выполнить логическую операцию с типом данных boolean.

  1.   int a = 1, b = 2;
  2.   boolean bool = a <= b;

Говоря о булевых или логических типах данных нам придётся освежить свои воспоминания о булевой алгебре и возможных логических операциях.

a b a & b a | b a ^ b ! a
false false false false false true
false true false true true true
true false false true true false
true true true true false false

С помощью таблицы с результатами логических операций можно перепроверить работу Java:

  1. public class NewBoolean {
  2.     public static void main(String[] args) {
  3.         boolean a, b, c;
  4.         a = true;
  5.         b = false;
  6.         c = a & b;
  7.         System.out.println(c);
  8.     }
  9. }

Логические операторы, которые поддерживаются явой:

Логический операторы Значение
== Равно
!= Неравно
! Отрицание, логическое не
& Логическое И, and
| Логическое или, or
^ Исключительное или, XOR
&& Укороченный &
|| Укороченный или

Логические операторы && и || - это укороченные версии операторов & и |. Отличие заключается в том, что например в укороченной версии (или), если первый операнд имеет значение (true), то выражение сразу становится (true) и второй операнд даже не рассматривается. То же самое и с (и), если первый операнд имеет ложное значение (false), то и все выражение сразу становится (false), второй операнд не рассматривается. И соответственно благодаря тому, что значение второго операнда вычислять не нужно, экономится время и повышается эффективность кода.

Что бы показать разницу работы операторов мне нужно немного забежать вперёд и воспользоваться вещами, которые я ещё не освещал.Например условные операторы if-else.Запоминать их(пока) не нужно, просто попытаться понять разницу в операторах:

  1. public class AndAnd {
  2.           public static void main(String[] args) {
  3.             if(a() <strong>&&</strong> b()){  //здесь меняем оператор и сравниваем результаты
  4.                 System.out.println("Готово");
  5.             }else{
  6.                 System.out.println("Не получилось");
  7.             }
  8.         }
  9.         public static boolean a(){
  10.             System.out.print("Hallo ");
  11.             return false;
  12.         }
  13.         public static boolean b(){
  14.             System.out.println("World");
  15.             return true;
  16.         }
  17. }

  1. //Если использовать оператор &&, то
  2. Hallo Не получилось

  1. //Вывод при использовании оператора &
  2. Hallo World
  3. Не получилось

Если должны быть проверены все условия, то надо использовать &. Если речь идёт о быстром и чётком решении, то && помогает сэкономить ресурсы и время.

Домашнее задание:
Что выдаст программа, если запросить значения a,b,c,d,e,f?
Посчитайте сначала в уме.

  1.         boolean a = (7+8)*5 > 7+8*5;
  2.         boolean b = 3+4 > 9+1 && 16-5 > 3*4;
  3.         boolean c = 3+4 > 9+1 & 16-5 > 3*4;
  4.         boolean d = (16/2 < 6+2 || 4+5 <= 4*5);
  5.         boolean e = 16/2 < 6+2 | 4+5 <= 4*5;
  6.         boolean f = !(3*4 < 7+8);

Напишите программу и проверьте свои результаты.
Сравните строчку вывода со своей:
 System.out.println(a + "\n" + b + "\n" +c + "\n"+ d +"\n"+ e +"\n" + f);

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
Target Image