Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのIntegerとintの違いとは?ラッパークラスとプリミティブ型の違いを解説

Javaでは数値を扱う際に「int」と「Integer」の2つが使われます。一見似ていますが、両者には明確な違いがあり、適切に使い分けることが重要です。この記事では、それぞれの特徴と違いをわかりやすく解説します。

Integer(ラッパークラス)とint(プリミティブデータ型)の主な違い

  • 最大の違いは、Integerはラッパークラスであるのに対し、intはプリミティブデータ型(基本データ型)であるという点です。
  • int32ビットの符号付き2の補数表現で整数値を格納するデータ型です。一方、Integerはプリミティブ型のint値をオブジェクトとして包み込む(ラップする)クラスです。
  • Integerはオブジェクトを必要とするメソッドの引数として使用できます。一方、intは整数値そのものを必要とするメソッドの引数として使用でき、算術演算式にも直接利用できます。
  • intはメモリ上に整数値を直接格納するために使われます。Integerは、int値をオブジェクトに変換したり、オブジェクトからint値へ変換したりする際に役立ちます。
  • int型の変数は、finalとして宣言されない限り変更可能(ミュータブル)です。一方、Integerクラスは1つのint値を保持し、不変(イミュータブル)であるという特徴があります。

なお、Java 5以降ではオートボクシング/アンボクシング機能により、intとIntegerは多くの場面で自動的に相互変換されます。ただし、コレクション(ListやMapなど)に数値を格納する場合はオブジェクトが必要なため、Integerを使用します。

例1:int(プリミティブ型)の使用例

public class PrimitiveDataTypeTest {
    public static void main(String []args) {
        // intの宣言
        int a = 20;
        int b = 40;
        int result = a + b;
        System.out.println("Result is: " + result);
    }
}

出力結果

Result is: 60

例2:Integer(ラッパークラス)の使用例

public class WrapperClassTest {
    public static void main(String []args) {
        int a = 20;
        Integer b = Integer.valueOf(a);
        System.out.println("Converted Value of b is: " + b);
        Integer c = new Integer(30);
        int d = c.intValue();
        System.out.println("Converted Value of d is: " + d);
    }
}

出力結果

Converted Value of b is: 20
Converted Value of d is: 30

例2では、Integer.valueOf()メソッドを使ってint値をIntegerオブジェクトに変換(ボクシング)し、intValue()メソッドを使ってIntegerオブジェクトからint値を取り出す(アンボクシング)方法を示しています。

まとめ

  • パフォーマンスが重視される単純な計算にはintが適しています。
  • コレクションへの格納やnullを許容したい場合など、オブジェクトとして扱いたい場面ではIntegerを使用しましょう。
  1. JavaのJFrameとJDialogの違いとは?特徴と使い分けを解説

    JavaのSwingには、ウィンドウを表示するためのトップレベルコンテナとしてJFrameとJDialogが用意されています。どちらもよく似た役割を持ちますが、動作や用途には重要な違いがあります。この記事では、それぞれの特徴をサンプルコードとともに解説し、最後に使い分けのポイントをまとめます。 JFrameとは フレームに追加されたコンポーネントは「コンテンツ」として扱われ、contentPaneによって管理されます。JFrameにコンポーネントを追加する際は、フレーム本体ではなくcontentPaneに対して追加する必要があります。 JFrameは、タイトル、境界線、(オプションで)メニュ

  2. JavaのGridLayoutとGridBagLayoutの違いを徹底解説!特徴と使い分けのポイント

    JavaのAWT/Swingには複数のレイアウトマネージャーが用意されていますが、その中でもGridLayoutとGridBagLayoutは、コンポーネントを格子状(グリッド)に配置するという点でよく似ています。しかし、両者には重要な違いがあります。 GridLayoutは、すべてのコンポーネントを矩形のグリッド内に配置し、領域を同じサイズの長方形に分割して、各コンポーネントをそれぞれのセルの中に収めます。一方、GridBagLayoutは柔軟性の高いレイアウトマネージャーであり、コンポーネントのサイズを揃えることなく、縦方向・横方向に整列させて配置できます。各GridBagLayoutオブ