三目運算子的一點小細節

2021-09-24 14:43:56 字數 851 閱讀 2185

public static void main(string args)  else 

system.out.print(o1);

system.out.print(" ");

system.out.print(o2);

}

結果是:

1.0 1
結果對我來說是很出乎意料的,因為在做這道之前,我一直是這樣認為的:

三目運算子也稱三元一次運算子,他的規則是 x?y:z,其中x是boolean值,也就是個判斷,如果為真(true)值就取y,如果為假(false),值就取z,他也可以寫成if(x)esle;再來看你這裡的object o1 = true ? new integer(1) : new double(2.0);其實你這裡面包含乙個三元一次運算子和乙個賦值運算,因為三目運算子的優先順序高於賦值運算子,所以先執行三目運算子,得到new integer(1) ,等式就變成了object o1 =new integer(1) ,就得到o1new了個integer物件,賦值為1,所以列印的就是1。(當然這個結論肯定是錯誤的,因為上面那個結果是我自己通過idea跑出來的)

其實上面忽略了乙個三目運算子中乙個關鍵的概念:就是三目運算子中左右兩個資料型別應該是一樣的,如果不一樣,三目運算子在進行運算時,會先將小的資料型別轉換大的資料型別,即在上面的那段程式中,三目運算子會優先將integer轉換為double,然後再進行剩下的運算或者說進行if-else的判斷。

三目運算子小技巧

三目運算子是乙個很方便快捷的書寫一些簡單的邏輯語句的方式 x 100?above 100 below 100 x 100?x 200?above 200 between 100 200 below 100 但是有些時候當邏輯複雜之後,三目運算子書寫起來可讀性也會很難。這個時候,我們就可以使用邏輯與 ...

三目運算子

1 概念 根據不同的條件,執行不同的操作 返回不同的值。條件1?值1 或操作1 如果滿足條件 1,就返回值 1或執行操作1 條件2?值2 或操作2 否則,如果滿足條件 2,就返回值 2或執行操作2 總結 表示式 閏年 平年 多種條件 條件 1?值1 條件2?值 值3例子 1 輸入星期四 就輸出 班級...

三目運算子

單目運算子 3 雙目運算子 3 4 三目運算子 格式 表達關係式 表示式1 表示式2 如果條件為true,運算後的結果是表示式1 如果條件為false,運算後的結果是表示式2 比較表示式 結果是乙個boolean型別 執行流程 根據比較表示式的計算返回乙個true或者false。如果是true,就把...