1
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 に変換されたのはなぜですか?

ティア!!

4

3 に答える 3

2

(x>5)?2.3:22.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

これについてもっと読んでください。

于 2013-04-11T07:39:22.617 に答える
0

さて、あなたは三項演算子を持っています?::(x>5) ? 2.3 : 2 この演算子には正確に1つの戻り値の型があります - これは両方のケースに一致する必要があります -> したがってfloat2.3

于 2013-04-11T07:39:51.290 に答える