原文出自 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 != value2value1 < value2value1 <= 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: trueobj1 instanceof Child: falseobj1 instanceof MyInterface: falseobj2 instanceof Parent: trueobj2 instanceof Child: trueobj2 instanceof MyInterface: true
使用instanceof操作符時,要記住,null不是任何類的執行個體。