Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Основы Языка
Раздел: Операторы
Равенство, Реляционные, и Условные Операторы
Домашняя страница > Изучение Языка Java > Основы языка

Равенство, Реляционные, и Условные Операторы

Равенство и Операторы отношения

Равенство и операторы отношения определяют, больше ли один операнд чем, меньше чем, равен, или не равен другому операнду. Большинство этих операторов будет, вероятно, выглядеть знакомым Вам также. Имейте в виду, что следует использовать"==", не"=", тестируя, если два примитивных значения равны.

==      equal to
!=      not equal to
>       greater than
>=      greater than or equal to
<       less than
<=      less than or equal to

Следующая программа, ComparisonDemo, тестирует операторы сравнения:


class ComparisonDemo {

    public static void main(String[] args){
        int value1 = 1;
        int value2 = 2;
        if(value1 == value2)
            System.out.println("value1 == value2");
        if(value1 != value2)
            System.out.println("value1 != value2");
        if(value1 > value2)
            System.out.println("value1 > value2");
        if(value1 < value2)
            System.out.println("value1 < value2");
        if(value1 <= value2)
            System.out.println("value1 <= value2");
    }
}

Вывод:

value1 != value2
value1 <  value2
value1 <= value2

Условные Операторы

&& и || операторы выполняют Условное выражение - И и Условное выражение - ИЛИ операции на двух булевых выражениях. Эти операторы показывают поведение "замыкания накоротко", что означает, что второй операнд оценивается только если необходимый.

&& Conditional-AND
|| Conditional-OR

Следующая программа, ConditionalDemo1, тесты эти операторы:


class ConditionalDemo1 {

    public static void main(String[] args){
        int value1 = 1;
        int value2 = 2;
        if((value1 == 1) && (value2 == 2))
            System.out.println("value1 is 1 AND value2 is 2");
        if((value1 == 1) || (value2 == 1))
            System.out.println("value1 is 1 OR value2 is 1");
    }
}

Другой условный оператор ?:, который может считаться сокращением для if-then-else оператор (обсужденный в разделе Операторов управления этого урока). Этот оператор также известен как тернарный оператор, потому что он использует три операнда. В следующем примере этот оператор должен быть считан как: "Если someCondition true, присвойте значение value1 к result. Иначе, присвойте значение value2 к result."

Следующая программа, ConditionalDemo2, тесты ?: оператор:


class ConditionalDemo2 {

    public static void main(String[] args){
        int value1 = 1;
        int value2 = 2;
        int result;
        boolean someCondition = true;
        result = someCondition ? value1 : value2;

        System.out.println(result);
    }
}

Поскольку someCondition истина, эта программа печатает "1" на экран. Используйте ?: оператор вместо if-then-else оператор, если это делает Ваш код более читаемым; например, когда выражения компактны и без побочных эффектов (таких как присвоения).

Оператор Сравнения типов instanceof

instanceof оператор сравнивает объект с указанным типом. Можно использовать это, чтобы протестировать, если объект является экземпляром class, экземпляром подкласса, или экземпляром class, который реализует определенный интерфейс.

Следующая программа, InstanceofDemo, определяет родительский class (названный Parent), простой интерфейс (названный MyInterface), и дочерний class (названный Child) это наследовалось от родителя и реализует интерфейс.


class InstanceofDemo {
    public static void main(String[] args) {

        Parent obj1 = new Parent();
        Parent obj2 = new Child();

        System.out.println("obj1 instanceof Parent: "
            + (obj1 instanceof Parent));
        System.out.println("obj1 instanceof Child: "
            + (obj1 instanceof Child));
        System.out.println("obj1 instanceof MyInterface: "
            + (obj1 instanceof MyInterface));
        System.out.println("obj2 instanceof Parent: "
            + (obj2 instanceof Parent));
        System.out.println("obj2 instanceof Child: "
            + (obj2 instanceof Child));
        System.out.println("obj2 instanceof MyInterface: "
            + (obj2 instanceof MyInterface));
    }
}

class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {}

Вывод:

obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true

При использовании instanceof оператор, имейте в виду это null не экземпляр чего-либо.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Присвоение, Арифметика, и Унарные операторы
Следующая страница: Поразрядный и Операторы Сдвига разряда