web-dev-qa-db-ja.com

Javaでlongを初期化する

プリミティブデータ型 - 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になっていますか。

190
aamadmi
  1. Llong i = 12345678910L;を追加する必要があります。
  2. はい。

ところで:それは大文字のLである必要はありませんが、小文字は1と何度も混同されます:)。

383
MByD
  1. Javaが長い文字として認識するようにするには、数字の末尾にL文字を追加する必要があります。

    long i = 12345678910L;
    
  2. はい。

原始データ型 を参照してください。「整数リテラルは、文字Lまたはlで終わる場合はlong型であり、そうでなければint型です。」

55
Jack Edmonds

最後に大文字のLを追加する必要があります。

long i = 12345678910L;

3.0fを持つfloatについても同じことが言えます

どちらがあなたの質問に答えるはずです

38
Amir Raminfar

長く初期化するには、最後に "L"を追加する必要があります。
大文字でも小文字でもかまいません。

すべての数値はデフォルトでintです。任意の整数を使用してbyteを操作した場合でも、最初にbyteintにプロモートされてから、任意の操作が実行されます。

これを試して

byte a = 1; // declare a byte
a = a*2; //  you will get error here

2はデフォルトでintなのでエラーになります。
したがって、あなたはbyteintを掛けようとしています。そのため、結果はintに型キャストされ、byteに代入することはできません。

15
Suraj Dubey