3

AP Comp Sci の模擬試験を受けていたところ、次の問題が見つかりました。

次の出力は何ですか:

System.out.println("1" + new Integer(2) + 3);

答えは

123,

が文字列にキャストされていないため、混乱しています。したがって、両方の部分が整数である場合new Integer(2)、Javaコンパイラはステートメントが文字列連結であると信じるのはなぜですか?new Integer(2) + 3

4

4 に答える 4

9

加算は連想のままです。a + b + c == (a + b) + c

于 2013-05-06T23:04:57.883 に答える
1

答えは操作の順序と同じくらい簡単です。つまり、ステートメントが左から右に評価されて読み取れるようになります。System.out.println("1" + new Integer(2).toString() + 3.toString());

于 2013-05-06T23:06:29.403 に答える
0

まず、男が指摘するように、足し算は左結合です。

次に、"1" + 2 のオーバーロード解決は、文字列である左側のオペランドによって制御されます。これにより連結が強制され、結果は "12" になります。

ここで、"12" + 3 はまったく同じオーバーロード解決を通過し、"123" になります。

于 2013-05-07T02:43:53.357 に答える