私はJ2MEで小さなコードを書いています。メソッドsetTableId(Short tableId)
を持つクラスがあります。 setTableId(100)
を書き込もうとすると、コンパイル時エラーが発生します。別の短い変数を宣言せずに短い値を設定するにはどうすればよいですか?
Long
値を設定するとき、setLongValue(100L)
を使用できますが、機能します。それで、L
はここで何を意味し、Short
値の文字は何ですか?
ありがとう
Javaでは、整数リテラルは、文字 'L'または 'l'の接尾辞が付いていない限り、int型です(小文字のLは数字の1と区別しにくいため、大文字のLが推奨されます)。 Lの接尾辞が付いている場合、リテラルはlong型です。
接尾辞には、Java言語仕様の特別な名前はありません。他の整数型の接尾辞もありません。したがって、ショートまたはバイトリテラルが必要な場合は、キャストする必要があります。
byte foo = (byte)0;
short bar = (short)0;
SetLongValue(100L)では、Lサフィックスを必ずしも含める必要はありません。この場合、intリテラルは自動的にlongに拡張されます。これは、Java言語仕様では拡張プリミティブ変換と呼ばれます。
バイトや短いリテラルなどはありません。 (short)100
を使用してshortにキャストする必要があります
setTableId((short)100)
を使用できます。これはJava 5で変更されたので、バイトまたはショートに割り当てられ、ターゲットの範囲内の数値リテラルは自動的にターゲットタイプと見なされるようになったと思います。ただし、最新のJ2ME JVMはJava 4から派生しています。