Логический тип

 

Переменные логического типа могут принимать значение или true (истина), или false (ложь). Сразу обратите внимание, что нельзя вместо true и false писать нулевое и ненулевое значения (как, например, это можно делать в C/C++). Такое замены в Java нет.

 

Для переменных логического типа существуют операции & (и), && (и), | (или), || (или), ! (не), ^ (исключающее или). Обратите внимание, что для "и" и "или" существует два варианта. Об их различии чуть ниже. Пока же приведем таблицы истинности:

Оператор Описание Результат
&& или & и Результат true только тогда, когда оба операнда равны true
|| или | или Результат false только тогда, когда оба операнда равны false
^ исключающее или Результат true только тогда, когда ровно один из операндов равен true
! не Изменяет значение на противоположное (true на false, false на true)
== логическое равно Применяется к переменым любого типа. Результат true, если оба операнда равны true, false - в противном случае.

 

Теперь о различии между && и & (|| и |). Операторы & и | - это обычные логические операторы, && и || - сокращенные. Вот конкретный пример для && и &:

...

k=20;

if (k<0 & k/0>1) //деление на 0 и возникнет ошибка

{

System.out.println(k);

}

if (k<0 && k/0>1) //деление на 0, но ошибки нет

{

System.out.println(k);

}

...

 

Т. е. в первом случае (с одним &) проверяются все части логического выражения, а во втором (с двумя &&) правая часть не проверяется (так как левая равна false).

 

Вот пример и для "или":

...

k=20;

if (k>0 | k/0>1) //деление на 0 и возникнет ошибка

{

System.out.println(k);

}

if (k>0 || k/0>1) //деление на 0, но ошибки нет

{

System.out.println(k);

}

...

 

Здесь во втором случае так как левая часть равна true, то правая часть вообще проверяться не будет (и ошибка, соответственно не возникнет).

 

Также обратите внимание, что в качестве логического равно (т. е. когда мы отвечаем на вопрос, верно ли что что-то равно чему-то) используется двойное равно (==). Одинарное же равно используется для присваивания:

if(a==b){ //Если a равно b

{

a=c; //В a записываем c

}