0

次のコード例があります。

int pay = 80;
int bonus = 65;
System.out.println(pay + bonus + " " + bonus + pay);

次の出力が得られる理由を誰かに説明してもらえますか:

145 6580
4

9 に答える 9

3

なぜなら、これはoperator overloading問題です。ここで、First+plusoperator、last+concatoperator です。

 System.out.println(pay + bonus + " " + bonus + pay);
                        |                     |
                      (plus)                (concat)
于 2013-11-06T05:33:27.667 に答える
0

" " の前、整数としての支払いとボーナス、加算された結果は 145 です。 " " の後、ボーナスと文字列としての支払い、結果は "6580" です。

于 2013-11-06T05:42:12.767 に答える
0

他の人が言っているように、コンパイラは最初に整数値を追加してから結果を出力します。 " " の後、合計値が String型に変更され、その+演算子が連結アクションとして機能します。その出力を取得しないようにするには、次のようにします。

System.out.println(String.valueOf(pay) + String.valueOf(bonus) + " " + String.valueOf(bonus) + String.valueOf(pay));
于 2013-11-06T05:39:54.910 に答える
0

println の最初の支払いとボーナスは整数を返します。そのため、支払いとボーナスを計算し、出力する前に整数として返します。

ただし、「」の後。+ 操作は文字列の連結になり、その後はすべて連結された文字列として返されます。したがって、("" + ボーナス + 支払い) は "6580" として返されます。

于 2013-11-06T05:39:57.083 に答える
0

bonuspayはどちらも int であるため、1 つの int の結果に結合されます。

それらの間に空の文字列を挿入する必要があります。

于 2013-11-06T05:33:36.397 に答える