web-dev-qa-db-ja.com

短い値の設定Java

私はJ2MEで小さなコードを書いています。メソッドsetTableId(Short tableId)を持つクラスがあります。 setTableId(100)を書き込もうとすると、コンパイル時エラーが発生します。別の短い変数を宣言せずに短い値を設定するにはどうすればよいですか?

Long値を設定するとき、setLongValue(100L)を使用できますが、機能します。それで、Lはここで何を意味し、Short値の文字は何ですか?

ありがとう

94
Mubashar

Javaでは、整数リテラルは、文字 'L'または 'l'の接尾辞が付いていない限り、int型です(小文字のLは数字の1と区別しにくいため、大文字のLが推奨されます)。 Lの接尾辞が付いている場合、リテラルはlong型です。

接尾辞には、Java言語仕様の特別な名前はありません。他の整数型の接尾辞もありません。したがって、ショートまたはバイトリテラルが必要な場合は、キャストする必要があります。

byte foo = (byte)0;
short bar = (short)0;

SetLongValue(100L)では、Lサフィックスを必ずしも含める必要はありません。この場合、intリテラルは自動的にlongに拡張されます。これは、Java言語仕様では拡張プリミティブ変換と呼ばれます。

149
Lauri

バイトや短いリテラルなどはありません。 (short)100を使用してshortにキャストする必要があります

30
er4z0r

setTableId((short)100)を使用できます。これはJava 5で変更されたので、バイトまたはショートに割り当てられ、ターゲットの範囲内の数値リテラルは自動的にターゲットタイプと見なされるようになったと思います。ただし、最新のJ2ME JVMはJava 4から派生しています。

8
Lawrence Dol

通常、変数をキャストしてshortにできます。

また、このような問題は混乱を招く可能性があります。これは、+演算子がintに昇格するためです

enter image description here

要素をキャストしても役に立たない:

enter image description here

式をキャストする必要があります。

enter image description here

1
matt burns