progs.biz  
Начало>Java>Основы>Урок 5
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Дэвид Флэнаган Java в примерах. Справочник
Дэвид Флэнаган Java в примерах. Справочник
Заказать на Озоне



Яндекс-цитирования

Введение в Java
Урок 5. Логический тип

Переменные логического типа могут принимать значение или 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
}
Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев