=+ がコンパイルエラーを起こさないのはなぜですか? [重複] 質問する

=+ がコンパイルエラーを起こさないのはなぜですか? [重複] 質問する

コード内で=+の代わりに を誤って使用している人がいましたが、コンパイル エラーとして表示されませんでした。+=

これは

int a =+ 2;

と同じです

int a = 0 + 2;

?

ベストアンサー1

+は有効なのでコンパイルエラーは発生しません(ただし、あまり役に立ちません)。単項演算子同様に-:

int x = +1;
int y = -1;

Java言語仕様の関連セクションは単項プラス演算子 + (§15.15.3 )+単項演算を呼び出すと、単項数値昇格(§5.6.1)オペランドの。これは次のことを意味します。

  • オペランドがコンパイル時型ByteShortCharacter、 のいずれかの場合Integer、アンボックス化変換(§5.1.8int)。その結果は、拡大プリミティブ変換によって型の値に昇格されます(§5.1.2) または恒等変換 (§5.1.1)。

  • それ以外の場合、オペランドがコンパイル時の型LongFloat、または である場合Double、アンボックス化変換の対象となります(§5.1.8)。

  • それ以外の場合、オペランドがコンパイル時の型byteshort、または である場合、拡大プリミティブ変換によってchar型の値に昇格されます(int§5.1.2)。

  • それ以外の場合、単項数値オペランドはそのまま残り、変換されません。

いずれにしても、値セット変換(§5.1.13)が適用されます。

つまり、

  1. 数値プリミティブラッパー型は開封済み、 そして;
  2. 整数型は以下intより小さい広がったint

おすすめ記事