Spec-Zone .ru
спецификации, руководства, описания, API
|
Равенство и операторы отношения определяют, больше ли один операнд чем, меньше чем, равен, или не равен другому операнду. Большинство этих операторов будет, вероятно, выглядеть знакомым Вам также. Имейте в виду, что следует использовать"==
", не"=
", тестируя, если два примитивных значения равны.
== 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
оператор сравнивает объект с указанным типом. Можно использовать это, чтобы протестировать, если объект является экземпляром 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
не экземпляр чего-либо.