2

私はよく両方の形式を使用します。Java の加算 (減算、乗算など) 演算子の短いものと長いものです。そして、これはパフォーマンスや速度には影響しないと思っていましたが、「なぜ Java 作成者はこの演算子の 2 つの形式を提供したのですか? また、それらの違いは何ですか?」という疑問に戸惑いました。では、2 つの形式の実際の違いは次のとおりです。

int a = 10, b = 3;
b = b + a;

int a = 10, b = 3;
b += a;

誰かが私にこれを説明できますか?2 つのフォームの違いは、下のレベルに隠されているのでしょうか? すべての本は、「Java にも複合演算子があります...」としか書かれていませんが、違いについては何もありません。

4

11 に答える 11

8

次のコードを検討してください。

int x = 9;
short s = 2;
s = s+x; // Compiler error
s += x;  // Compiles 

だから、基本的にあなたが言うとき:s += xそれはそれを意味しs = (short)(s+x)ます. を使用すると、暗黙的にからにs = s+xキャストできないため、コンパイラは文句を言います。したがって、オペレーターは型キャストを処理します。xintshort+=

于 2013-05-08T10:00:11.810 に答える
3

プログラマーの観点からは何もないため、違いについては何も言いません。の

b = c + a;

表記があるのは通常の加算の場合です。短縮形

b += a;

c「である」という特殊なケースのために存在し、b実際に展開されます

b = b + a;
于 2013-05-08T09:45:17.450 に答える
1

1つは短いです、それはそれについてです。

于 2013-05-08T09:45:30.963 に答える
0

同じ質問を自問する別の方法は、次のようになりjava.lang.StringますString。その違いは、ソース コードが何であるかという点で非常に大きく、表現力と読みやすさです。

于 2013-05-08T10:02:11.180 に答える
0

この質問は本当に古いです。しかし、要約したいと思い ます: Java 言語仕様で次のテキストを見つけました:

E1 op= E2の形式の複合代入式は、E1 = (T) ((E1) op (E2))と同等です。ここで、TE1の型ですが、E1 は 1 回だけ評価されます。

それで、理解するのに十分です!

于 2013-06-11T06:31:11.410 に答える
0

実際には、両方のステートメントにまったく違いはありません。

b += a内部のみとして扱われb = b + aます。

于 2013-05-08T09:45:32.820 に答える