原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/12/15/2819844.html
英文出自 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
相等和比较操作符
相当和比较操作符,判断一个操作数,是大于,小于,等于,或者不等于另一个操作数。主要的操作符对于你来说,很可能是熟悉的。记住,当判断两个原生类型是否相当,必须使用"==",而不是"="。
== 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
条件操作符
&&和||操作符对两个boolean操作数执行 条件与 和 条件或 操作。这些运算符表现出“短路”的行为,这意味着仅在需要时才会计算第二个操作数。
&& 条件与 || 条件或
下面的程序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成立,将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是true,所以程序在屏幕里输出"1".使用
?:操作符替代if-then-else语句,如果这让你的代码更加可读;例如,当表达式结构紧凑,无副作用(例如赋值)。
类型比较操作符instanceof
instanceof操作符比较object和一个指定的类型。使用它,可以判断一个对象是否一个类的实例,子类的实例,实现了特定接口的类的实例。
下面的程序,InstanceofDemo定义一个父类(命名为Parent),一个简单的接口 (命令为
MyInterface
),一个继承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不是任何类的实例。