|
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 не экземпляр чего-либо.