三元運算子與if/else的區別
阿新 • • 發佈:2020-12-18
技術標籤:java
三元運算子與if/else的區別
三元運算子在進行判斷時,要求兩個變數是同一型別。這與if/else有很大的區別。
例如 a?b:c 表示
如果a為真則b,a為假則c
這裡要求b和c型別相同,如果不同會強轉
參考下方的例子
public static void main(String[] args) {
Object o1 = true ? new Integer(1): new Double(2.0);
System.out.println(o1);
System.out.println(false ? new Integer (1): new Double(2.0));
Object o2;
if (true){
o2=new Integer(1);
}else {
o2=new Double(2.0);
}
System.out.println(o2);
}
上述結果如下
可以看到第一個System.out.println並沒有輸出1,而是輸出1.0 。
因為這裡1是Integer型別,2.0是Double型別,編譯時三元運算子要求1被強轉為Double型別,變成1.0 。
而if/else沒有這回事,該怎麼輸出就怎麼輸出。