Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
相等性和关系运算符确定一个操作数是否大于,小于,等于或不等于另一个操作数。大多数这些运算符也可能看起来很熟悉。请记住,在测试两个原始值是否相等时,必须使用 "==
",而不是 "=
"。
== 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 (条件或) 操作。这些运算符表现出 "短路" 行为,这意味着第二个操作数仅在需要时才被计算。
&& 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
语句的缩写(在本课节的 Control Flow Statements 部分)。该运算符也被称为 ternary operator (三运算符),因为它使用三个操作数。在以下示例中,应将此运算符理解为:“如果 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
运算符将对象与指定的类型进行比较。你可以使用它来测试对象是否是类的实例,子类的实例或实现特定接口的类的实例。
以下程序 InstanceofDemo
定义了一个父类(名为 Parent
),一个简单的接口(名为 MyInterface
) ,以及从父类继承并实现接口的子类(名为 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
不是任何事物的实例。