int x = 5;
System.out.println((x>5)?2.3:2); // OP-> 2.0
System.out.println((x==5)?10:20);// OP-> 10
最初のケースで、OP が 2 から 2.0 に変換されたのはなぜですか?
ティア!!
int x = 5;
System.out.println((x>5)?2.3:2); // OP-> 2.0
System.out.println((x==5)?10:20);// OP-> 10
最初のケースで、OP が 2 から 2.0 に変換されたのはなぜですか?
ティア!!
(x>5)?2.3:2
2.3または2を返すためです。
それらは同じタイプのものである必要があります。(戻り値の型は同じでなければならないので)
2.3
は double なので、 double に変換2
されます。
たとえば、次のように変更した場合:
(x>5)?1:2
その後、出力は になります2
。どちらも整数であるため、キャストを行う必要はありません。
で書くとif
次のようになります。
if(x > 5)
return 2.3
else
return 2
このコードを含むメソッドの戻り値の型が である場合int
、エラーが発生します。
しかし、それが double の場合は、2
が にキャストされるため、問題ありません2.0
。
これについてもっと読んでください。
さて、あなたは三項演算子を持っています?:
:(x>5) ? 2.3 : 2
この演算子には正確に1つの戻り値の型があります - これは両方のケースに一致する必要があります -> したがってfloat
、2.3