[解決済み] Javaで「+=」演算子は何をするのですか?
2022-03-01 11:03:20
質問
以下のコードの意味を理解するのを手伝ってくれませんか?
x += 0.1;
解決方法は?
プログラミングの常識は、以下の通りです。
x += y
の等価な省略記法である。
x = x + y
. というのは
x
と
y
が同じ型である場合(例えば、両方とも
int
のように)、この2つの文は同等とみなしてよい。
しかし、Javaでは
x += y
は
と同じです。
x = x + y
を一般的に使用します。
もし
x
と
y
が異なる型である場合、言語の規則により、2つの文の動作は異なります。例えば、次のようにします。
x == 0
(int)と
y == 1.1
(double)となります。
int x = 0;
x += 1.1; // just fine; hidden cast, x == 1 after assignment
x = x + 1.1; // won't compile! 'cannot convert from double to int'
+=
は暗黙のうちにキャストを実行します。
+
の場合、第2オペランドを明示的にキャストする必要があり、そうしないとコンパイラーエラーが発生します。
Joshua Blochの Java パズラー :
(...) 複合代入式は、その結果を自動的にキャストします。 計算を実行し、その変数の型に変換します。 左手側 もし結果の型が の場合、キャストは何の影響も及ぼしません。しかし,変数の型が が変数より広い場合、複合 代入演算子は、サイレント・ナローイング・プリミティブを実行します。 変換 JLS 5.1.3 ].
関連
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み】Pythonで「i += x」と「i = i + x」が異なるのはどんなとき?