「L」
日本語 | 長整数定数値 |
英語 | Long |
ふりがな | える |
フリガナ | エル |
整数リテラルに付ける、long型の印。
整数リテラルの末尾に付ける文字。
「100L」のように整数リテラルの末尾に「L」を付けることで、その整数リテラルはlong型とみなされる。「l」でも同様。
整数リテラルはそのままだとint型とみなされるため、int型の範囲を超えた整数値、つまり2147483647より大きい、もしくは-2147483648未満の値を記述するとコンパイルエラーとなる。その場合に、この「L」もしくは「l」を末尾に付ければよい。
「L」もしくは「l」を末尾に付けた整数リテラルはlong型となるため、当然long型の変数で受け取る必要がある。
また、「L」もしくは「l」を末尾に付けたとしても、当然long型の範囲を超えた値、つまり9223372036854775807より大きい値や-9223372036854775808未満の値は表現できないので注意。これらは整数リテラルで表現できないため、BigDecimalクラスを用いて足し合わせるといいだろう。
整数リテラルの末尾に付ける文字。
「100L」のように整数リテラルの末尾に「L」を付けることで、その整数リテラルはlong型とみなされる。「l」でも同様。
整数リテラルはそのままだとint型とみなされるため、int型の範囲を超えた整数値、つまり2147483647より大きい、もしくは-2147483648未満の値を記述するとコンパイルエラーとなる。その場合に、この「L」もしくは「l」を末尾に付ければよい。
「L」もしくは「l」を末尾に付けた整数リテラルはlong型となるため、当然long型の変数で受け取る必要がある。
また、「L」もしくは「l」を末尾に付けたとしても、当然long型の範囲を超えた値、つまり9223372036854775807より大きい値や-9223372036854775808未満の値は表現できないので注意。これらは整数リテラルで表現できないため、BigDecimalクラスを用いて足し合わせるといいだろう。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 整数リテラルはint型です。
// int型の範囲であれば当然整数リテラルで表現できます。
long lOK1 = 2147483647;
long lOK2 = -2147483648;
System.out.println( lOK1 );
System.out.println( lOK2 );
// 2147483647
// -2147483648
// でも、それよりサイズの大きい値、つまりlong型サイズの
// 整数リテラルはそのままだとコンパイルエラーになります。
// ※コンパイルエラーの例
// long lNG1 = 2147483648;
// ※エラーメッセージ
// 型 int のリテラル 2147483649 は範囲外です
// ※コンパイルエラーの例ここまで
// ※コンパイルエラーの例
// long lNG2 = -2147483649;
// ※エラーメッセージ
// 型 int のリテラル 2147483649 は範囲外です
// ※コンパイルエラーの例ここまで
// この場合、末尾に「L」もしくは「l」を付けるとlong型と
// みなされてコンパイルエラーにはなりません。
long lOK3 = 2147483648L;
System.out.println( lOK3 );
// 2147483648
long lOK4 = -2147483649L;
System.out.println( lOK4 );
// -2147483649
long lOK5 = 2147483648l;
System.out.println( lOK5 );
// 2147483648
long lOK6 = -2147483649l;
System.out.println( lOK6 );
// -2147483649
// 当然long型になるので、int型変数には格納できません。
// ※コンパイルエラーの例
// int i = 2147483648L;
// ※エラーメッセージ
// 型の不一致: long から int には変換できません
// ※コンパイルエラーの例ここまで
// また、long型の範囲を超えた値も表現できません。
// ※コンパイルエラーの例
// long lNG3 = 9223372036854775808L;
// ※エラーメッセージ
// 型 long のリテラル 9223372036854775808L は範囲外です
// ※コンパイルエラーの例ここまで
// あと、このコンパイルエラーは整数リテラルとして直接
// 記述する際の問題なので、直接書かなければ問題ありません。
// ただし、何も付けない整数リテラルはあくまでint型という
// ことを忘れずに。
long lNG4 = 2147483647 + 1;
System.out.println( lNG4 );
// -2147483648
// このように、コンパイルエラーにはなりませんが値としては
// 正しくありません。int型同士の足し算を行い、その結果も
// int型になって、桁溢れしているためです。
// こういう場合は片方をlong型にキャストしましょう。
long lOK7 = (long)2147483647 + 1;
System.out.println( lOK7 );
// 2147483648
}
}
public class Sample
{
public static void main( String[] args )
{
// 整数リテラルはint型です。
// int型の範囲であれば当然整数リテラルで表現できます。
long lOK1 = 2147483647;
long lOK2 = -2147483648;
System.out.println( lOK1 );
System.out.println( lOK2 );
// 2147483647
// -2147483648
// でも、それよりサイズの大きい値、つまりlong型サイズの
// 整数リテラルはそのままだとコンパイルエラーになります。
// ※コンパイルエラーの例
// long lNG1 = 2147483648;
// ※エラーメッセージ
// 型 int のリテラル 2147483649 は範囲外です
// ※コンパイルエラーの例ここまで
// ※コンパイルエラーの例
// long lNG2 = -2147483649;
// ※エラーメッセージ
// 型 int のリテラル 2147483649 は範囲外です
// ※コンパイルエラーの例ここまで
// この場合、末尾に「L」もしくは「l」を付けるとlong型と
// みなされてコンパイルエラーにはなりません。
long lOK3 = 2147483648L;
System.out.println( lOK3 );
// 2147483648
long lOK4 = -2147483649L;
System.out.println( lOK4 );
// -2147483649
long lOK5 = 2147483648l;
System.out.println( lOK5 );
// 2147483648
long lOK6 = -2147483649l;
System.out.println( lOK6 );
// -2147483649
// 当然long型になるので、int型変数には格納できません。
// ※コンパイルエラーの例
// int i = 2147483648L;
// ※エラーメッセージ
// 型の不一致: long から int には変換できません
// ※コンパイルエラーの例ここまで
// また、long型の範囲を超えた値も表現できません。
// ※コンパイルエラーの例
// long lNG3 = 9223372036854775808L;
// ※エラーメッセージ
// 型 long のリテラル 9223372036854775808L は範囲外です
// ※コンパイルエラーの例ここまで
// あと、このコンパイルエラーは整数リテラルとして直接
// 記述する際の問題なので、直接書かなければ問題ありません。
// ただし、何も付けない整数リテラルはあくまでint型という
// ことを忘れずに。
long lNG4 = 2147483647 + 1;
System.out.println( lNG4 );
// -2147483648
// このように、コンパイルエラーにはなりませんが値としては
// 正しくありません。int型同士の足し算を行い、その結果も
// int型になって、桁溢れしているためです。
// こういう場合は片方をlong型にキャストしましょう。
long lOK7 = (long)2147483647 + 1;
System.out.println( lOK7 );
// 2147483648
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 整数リテラルはint型です。 // int型の範囲であれば当然整数リテラルで表現できます。 long lOK1 = 2147483647; long lOK2 = -2147483648; System.out.println( lOK1 ); System.out.println( lOK2 ); // 2147483647 // -2147483648 // でも、それよりサイズの大きい値、つまりlong型サイズの // 整数リテラルはそのままだとコンパイルエラーになります。 // ※コンパイルエラーの例 // long lNG1 = 2147483648; // ※エラーメッセージ // 型 int のリテラル 2147483649 は範囲外です // ※コンパイルエラーの例ここまで // ※コンパイルエラーの例 // long lNG2 = -2147483649; // ※エラーメッセージ // 型 int のリテラル 2147483649 は範囲外です // ※コンパイルエラーの例ここまで // この場合、末尾に「L」もしくは「l」を付けるとlong型と // みなされてコンパイルエラーにはなりません。 long lOK3 = 2147483648L; System.out.println( lOK3 ); // 2147483648 long lOK4 = -2147483649L; System.out.println( lOK4 ); // -2147483649 long lOK5 = 2147483648l; System.out.println( lOK5 ); // 2147483648 long lOK6 = -2147483649l; System.out.println( lOK6 ); // -2147483649 // 当然long型になるので、int型変数には格納できません。 // ※コンパイルエラーの例 // int i = 2147483648L; // ※エラーメッセージ // 型の不一致: long から int には変換できません // ※コンパイルエラーの例ここまで // また、long型の範囲を超えた値も表現できません。 // ※コンパイルエラーの例 // long lNG3 = 9223372036854775808L; // ※エラーメッセージ // 型 long のリテラル 9223372036854775808L は範囲外です // ※コンパイルエラーの例ここまで // あと、このコンパイルエラーは整数リテラルとして直接 // 記述する際の問題なので、直接書かなければ問題ありません。 // ただし、何も付けない整数リテラルはあくまでint型という // ことを忘れずに。 long lNG4 = 2147483647 + 1; System.out.println( lNG4 ); // -2147483648 // このように、コンパイルエラーにはなりませんが値としては // 正しくありません。int型同士の足し算を行い、その結果も // int型になって、桁溢れしているためです。 // こういう場合は片方をlong型にキャストしましょう。 long lOK7 = (long)2147483647 + 1; System.out.println( lOK7 ); // 2147483648 } }