次のインライン条件では、整数と倍精度がそれぞれ出力されると予想される場合があります。
System.out.println(true ? 0 : 0.0);
System.out.println(false ? 0 : 0.0);
System.out.println(true ? new Integer(0) : new Double(0.0));
System.out.println(true ? 0 : "");
代わりに、一緒に発生した場合、両方とも double として出力されます。
0.0
0.0
0.0
0
インライン条件で他の数値が発生すると、数値が自動キャストされるのはなぜですか?
編集:オーバーロードされているためにこれが発生System.out.println
している場合、次の場合はどうなりますか:
list.add(true ? 0 : 0.0);
list.add(false ? 0 : 0.0);
list.add(true ? new Integer(0) : new Double(0.0));
list.add(true ? 0 : "");
System.out.println(list);
出力:
[0.0, 0.0, 0.0, 0]