コード内で=+
の代わりに を誤って使用している人がいましたが、コンパイル エラーとして表示されませんでした。+=
これは
int a =+ 2;
と同じです
int a = 0 + 2;
?
ベストアンサー1
+
は有効なのでコンパイルエラーは発生しません(ただし、あまり役に立ちません)。単項演算子同様に-
:
int x = +1;
int y = -1;
Java言語仕様の関連セクションは単項プラス演算子 + (§15.15.3 )+
単項演算を呼び出すと、単項数値昇格(§5.6.1)オペランドの。これは次のことを意味します。
オペランドがコンパイル時型
Byte
、Short
、Character
、 のいずれかの場合Integer
、アンボックス化変換(§5.1.8int
)。その結果は、拡大プリミティブ変換によって型の値に昇格されます(§5.1.2) または恒等変換 (§5.1.1)。それ以外の場合、オペランドがコンパイル時の型
Long
、Float
、または である場合Double
、アンボックス化変換の対象となります(§5.1.8)。それ以外の場合、オペランドがコンパイル時の型
byte
、short
、または である場合、拡大プリミティブ変換によってchar
型の値に昇格されます(int
§5.1.2)。それ以外の場合、単項数値オペランドはそのまま残り、変換されません。
いずれにしても、値セット変換(§5.1.13)が適用されます。
つまり、
- 数値プリミティブラッパー型は開封済み、 そして;
- 整数型は以下
int
より小さい広がったにint
。