Long ll = 102; // Error
Byte bb = 101; // No error
int型?Javaのプリミティブ割り当てコンテキストロングでの変換と<code>Byte</code>割り当てが細かいながら<code>Long</code>割り当ては、コンパイル時にエラーが生じているのはなぜ
Long ll = 102
は、コンパイラエラー "型の不一致:intからLongに変換できません"が発生します。コンパイラは102からlong
まで広がり、その後Long
になると仮定しました。 しかし、それは起こっていません。
ただし、Byte bb = 101;
はコンパイルエラーを生成していません。ここでは、101はbyte
(非長整数定数)に絞り込まれ、次にボックス化されてByte
になります。 ナローイングに問題がない場合、拡大する際の問題は何ですか?
ところで 'ロングLL = 102Lを動作しません;' – janos
感謝を働くだろう。私はコンパイラエラーを避けるためにコードを変更することに気付いていますが、コンパイラの動作を理解したいと思います。 – Lalith
BTWプリミティブを使用できる場合、オブジェクト/ラッパーは使用しないでください。これらは単純で高速です。 –