1. 程式人生 > 其它 >三元運算子與if/else的區別

三元運算子與if/else的區別

技術標籤: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沒有這回事,該怎麼輸出就怎麼輸出。