long - (2009/03/18 (水) 20:52:32) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*long
Javaにおいてlongはプリミティブ型の1つです。
longはメモリ領域を64ビット確保します。
longは符号付き整数を扱うので、2の63乗(9223372036854775808)より、値の範囲は-9223372036854775808~9223372036854775807となります。
10桁以上の数値を扱う場合longを使います。
数値リテラルのデフォルトはint型のため、longのデータにはlまたはLを指定しなくてはいけません。
----
**long 使用例 1
LongSample1.java
class LongSample1 {
public static void main(String[] args) {
long longMax = 9223372036854775807L;
long longMin = -9223372036854775808L;
System.out.println("longMax:" + longMax);
System.out.println("longMin:" + longMin);
}
}
実行結果
C:\java>javac LongSample1.java
C:\java>java LongSample1
longMax:9223372036854775807
longMin:-9223372036854775808
----
**long 値範囲を超えた場合 1
LongSample2.java
class LongSample2 {
public static void main(String[] args) {
long longMax = 9223372036854775808L;
long longMin = -9223372036854775809L;
System.out.println("longMax:" + longMax);
System.out.println("longMin:" + longMin);
}
}
コンパイル結果
C:\java>javac LongSample2.java
LongSample2.java:5: 整数 9223372036854775808 が大き過ぎます。
long longMax = 9223372036854775808L;
^
LongSample2.java:6: 整数 -9223372036854775809 が大き過ぎます。
long longMin = -9223372036854775809L;
^
エラー 2 個
以上のようにコンパイルエラーが起こります。
----
**long 値範囲を超えた場合 2
LongSample3.java
class LongSample {
public static void main(String[] args) {
long longMax = 9223372036854775807L;
long longMin = -9223372036854775808L;
System.out.println("longMax - longMin:" + (longMax - longMin));
}
}
実行結果
C:\java>javac LongSample.java
C:\java>java LongSample
longMax - longMin:-1
上記プログラムは本来なら9223372036854775807-(-9223372036854775808)で
longの値範囲を超えてしまいエラーになりそうですが、longの値は循環するそうです。
循環するので上記計算は
9223372036854775807-(-9223372036854775808)
↓
9223372036854775807+9223372036854775808
↓ 9223372036854775808はlong型の範囲を超えているので超えた分が循環し-9223372036854775808になる
9223372036854775807-9223372036854775808
↓
-1
となることがわかります。
----
*long
Javaにおいてlongは[[プリミティブ型]]の1つです。
longはメモリ領域を64ビット確保します。
longは符号付き整数を扱うので、2の63乗(9223372036854775808)より、値の範囲は-9223372036854775808~9223372036854775807となります。
10桁以上の数値を扱う場合longを使います。
数値リテラルのデフォルトは[[int]]型のため、longのデータにはlまたはLを指定しなくてはいけません。
----
**long 使用例 1
LongSample1.java
class LongSample1 {
public static void main([[String]][] args) {
long longMax = 9223372036854775807L;
long longMin = -9223372036854775808L;
System.out.println("longMax:" + longMax);
System.out.println("longMin:" + longMin);
}
}
実行結果
C:\java>javac LongSample1.java
C:\java>java LongSample1
longMax:9223372036854775807
longMin:-9223372036854775808
----
**long 値範囲を超えた場合 1
LongSample2.java
class LongSample2 {
public static void main(String[] args) {
long longMax = 9223372036854775808L;
long longMin = -9223372036854775809L;
System.out.println("longMax:" + longMax);
System.out.println("longMin:" + longMin);
}
}
コンパイル結果
C:\java>javac LongSample2.java
LongSample2.java:5: 整数 9223372036854775808 が大き過ぎます。
long longMax = 9223372036854775808L;
^
LongSample2.java:6: 整数 -9223372036854775809 が大き過ぎます。
long longMin = -9223372036854775809L;
^
エラー 2 個
以上のようにコンパイルエラーが起こります。
----
**long 値範囲を超えた場合 2
LongSample3.java
class LongSample {
public static void main(String[] args) {
long longMax = 9223372036854775807L;
long longMin = -9223372036854775808L;
System.out.println("longMax - longMin:" + (longMax - longMin));
}
}
実行結果
C:\java>javac LongSample.java
C:\java>java LongSample
longMax - longMin:-1
上記プログラムは本来なら9223372036854775807-(-9223372036854775808)で
longの値範囲を超えてしまいエラーになりそうですが、longの値は循環するそうです。
循環するので上記計算は
9223372036854775807-(-9223372036854775808)
↓
9223372036854775807+9223372036854775808
↓ 9223372036854775808はlong型の範囲を超えているので超えた分が循環し-9223372036854775808になる
9223372036854775807-9223372036854775808
↓
-1
となることがわかります。
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: