public static void main(String[] args) {
int i = 80;
String s = String.valueOf(i < 100 ? 90 : 100);
String s1 = String.valueOf(i < 100 ? 90 : 100.0);
System.out.println(s);
System.out.println(s1);
System.out.println("兩者是否相等:" + s.equals(s1));
}
以上執行結果爲:
90
90.0
兩者是否相等:false
爲什麼呢,三元操作符類型自動轉換了!
轉換規則:
若兩個操作數不可轉換,則不做轉換,返回值爲Object類型。
若兩個操作數是明確類型的表達式(比如變量),則按照正常的二進制數字來轉換,int類型轉換爲long類型,long類型轉換爲float類型等。
若兩個操作數中有一個是數字S,另外一個是表達式,且其類型標示爲T,那麼,若數字S在T的範圍內,則轉換爲T類型;若S超出了T類型的範圍,則T轉換爲S類型(可以參考《編寫高質量代碼:改善Java程序的151個建議》“建議22”,會對該問題進行展開描述)。
若兩個操作數都是直接量數字(Literal),則返回值類型爲範圍較大者。