Java の Long データ型と Int データ型の違い
この記事では、Java の int データ型と long データ型の違いについて説明し、ラッパークラス Integer と Long について説明します。これらのデータ型とラッパークラスの違いを理解し、シナリオに応じてどちらを使用するかを決定できるようになります。
Java の int および long データ型
int データ型は、整数を格納する Java のプリミティブデータ型です。これは、int が変数値のサイズとタイプを指定することを意味します。ただし、メソッドを呼び出すことはできません。int のサイズは 4 バイトです。-2,147,483,648 から 2,147,483,647 までの値を格納できます。
long データ型も、Java の 8 バイトのプリミティブデータ型です。整数を格納するために、int よりも広い範囲があります。long データ型は、int が保持できないより大きな整数を保持するために使用されます。-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 までの値を格納できます。
たとえば、int データ型で変数 num1 を作成し、long データ型で num3 を作成します。100 の値を num1 に割り当て、15000000000L を num3 に割り当てます。コンソールで変数を出力します。ここでも、同じデータ型で別の変数 num2 を作成し、2147483648 の値を割り当てます。次に、num2 変数を出力します。これらのコード行は、クラス内の main メソッド内に記述する必要があることに注意してください。
最初のコード例は正常に実行されますが、2 番目の例ではエラーが発生します。これは、値 2147483648 が int データ型の範囲を超えているためです。long データ型の値の後に L を記述して、long 値を示します。
サンプルコード:
int num1 = 100;
long num3 = 15000000000L;
System.out.println(num1);
System.out.println(num3);
出力:
100 15000000000
サンプルコード:
int num2 = 2147483648;
System.out.println(num2);
出力:
Main.java:3: error: integer number too large
int num2 = 2147483648;
^
1 error
Java の Integer と Long のラッパークラス
ラッパークラスは、オブジェクトがプリミティブデータ型を格納できる特定のタイプのクラスです。Integer および Long ラッパークラスについて説明します。ラッパークラスからラッパーオブジェクトを作成できます。これにより、オブジェクトに関連付けられたさまざまなメソッドを使用できます。
たとえば、ラッパークラス Integer のオブジェクト myInt を作成し、値 50 を割り当てます。ラッパークラス Long から別のオブジェクト myLong を作成し、値 326162165161616161 を割り当てます。変数 myInt と myLong を出力します。次に、String ラッパークラスの 2つのオブジェクトを myString1 と myString2 として作成します。myInt および myLong オブジェクトのそれぞれでメソッド toString() を使用します。最後に、length() メソッドを呼び出して、オブジェクト myString1 と myString2 の長さを出力します。
以下の例では、ラッパークラス Integer、Long、および String からオブジェクトを作成しました。オブジェクトを使用して、toString() や length() などのメソッドを呼び出しました。toString() メソッドは値を文字列に変換し、length() メソッドを使用してそれらの長さを計算できます。プリミティブデータ型からこれらのメソッドにアクセスしようとすると、アクセスできません。したがって、ラッパークラスを使用すると、さまざまな操作のメソッドを使用するラッパーオブジェクトを作成できます。
コード例:
Integer myInt = 50;
Long myLong = 326162165161616161L;
System.out.println(myInt);
System.out.println(myLong);
String myString1 = myInt.toString();
System.out.println(myString1.length());
String myString2 = myLong.toString();
System.out.println(myString2.length());
出力:
50
326162165161616161
2
18
Java での int と Integer および long と Long の違い
int または long と Integer および Long の主な違いは、データ型がプリミティブ型であるのに対し、ラッパークラスは非プリミティブ型であるということです。プリミティブデータ型は特定の値を保持しますが、ラッパークラスのオブジェクトは、格納されているデータの場所へのポインタにすぎません。
Integer myInt = new Integer(5);
int num = 5
上記の myInt オブジェクトは、データ 5 の場所への単なるポインタです。myInt オブジェクトが格納されているメモリには、値 5 の場所のメモリアドレスが含まれています。これは、値の場所への参照にすぎません。一方、変数 num が格納されているメモリには、値 5 が含まれています。
この概念は、null 値で視覚化できます。myInt オブジェクトを null 値で設定することはできますが、num 変数で同じことを行うことはできません。オブジェクトは参照型であるため、オブジェクトは null アドレスを参照できます。int はプリミティブであり、参照できないため、int データ型に null 値を含めることはできません。したがって、オブジェクトに null を割り当てると、null として出力されますが、int タイプに割り当てると、エラーがスローされます。
サンプルコード:
Integer myInt = null;
System.out.println(myInt);
出力:
null
サンプルコード:
int num = null;
System.out.println(myInt);
出力:
Main.java:6: error: incompatible types: <null> cannot be converted to int
int num = null;
^
1 error