136

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

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

ありがとう

4

4 に答える 4

214

Java では、整数リテラルはデフォルトで int 型です。他のいくつかのタイプでは、リテラルの末尾に,などLの大文字と小文字を区別しない文字を付けて、それぞれ long、double、または float を指定できます。読みやすくするために大文字を使用するのが一般的であることに注意してください。DF

Java 言語仕様では、byte 型または short 型に対して同じ構文糖衣が提供されていません。代わりに、明示的なキャストを使用してそのように宣言できます。

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

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

于 2010-02-19T08:46:25.097 に答える
39

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

于 2010-02-19T08:39:31.067 に答える
19

通常、変数をキャストしてshort.

このような混乱を招く可能性のある問題も発生する可能性があります。これは、+オペレーターがそれらをint

ここに画像の説明を入力

要素のキャストは役に立ちません:

ここに画像の説明を入力

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

ここに画像の説明を入力

于 2019-03-13T10:40:08.167 に答える
10

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

于 2010-02-19T08:37:56.717 に答える