プリミティブデータ型 - Oracle doc によると、Javaのlong
の範囲は-9,223,372,036,854,775,808
から9,223,372,036,854,775,807
です。私のEclipseでこのようなことをすると
long i = 12345678910;
それは私に "The literal 12345678910 of type int is out of range
"エラーを示しています。
2つの質問があります。
1)long
を値12345678910
で初期化するにはどうすればよいですか?
2)すべての数値リテラルは、デフォルトでタイプint
になっていますか。
L
:long i = 12345678910L;
を追加する必要があります。ところで:それは大文字のLである必要はありませんが、小文字は1
と何度も混同されます:)。
Javaが長い文字として認識するようにするには、数字の末尾にL
文字を追加する必要があります。
long i = 12345678910L;
はい。
原始データ型 を参照してください。「整数リテラルは、文字Lまたはlで終わる場合はlong型であり、そうでなければint型です。」
最後に大文字のL
を追加する必要があります。
long i = 12345678910L;
3.0f
を持つfloatについても同じことが言えます
どちらがあなたの質問に答えるはずです
長く初期化するには、最後に "L"を追加する必要があります。
大文字でも小文字でもかまいません。
すべての数値はデフォルトでint
です。任意の整数を使用してbyte
を操作した場合でも、最初にbyte
がint
にプロモートされてから、任意の操作が実行されます。
これを試して
byte a = 1; // declare a byte
a = a*2; // you will get error here
2
はデフォルトでint
なのでエラーになります。
したがって、あなたはbyte
にint
を掛けようとしています。そのため、結果はint
に型キャストされ、byte
に代入することはできません。