Javaにおけるint型とInteger型の違いを現役エンジニアが解説【初心者向け】

初心者向けにJavaでint型とInteger型の違いについて解説しています。これらはどちらも整数の変数型ですが、その性質についていくつかの違いがあります。int型とInteger型、それぞれの特徴について学びましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Javaにおけるint型とInteger型の違いについて、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まるでしょう。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

int型とInteger型の違いについて詳しく説明していくね!

大石ゆかり

お願いします!

 

int型とは

int型とは、-2147483648~2147483647の範囲にある整数値を保持するための32ビットの変数型です。

int型は「プリミティブ型」と呼ばれる部類に属す変数です。

プリミティブというのは英語で「原始の」、「初期の原始の」、「初期の」といった意味を持つ単語で、”primitive”と綴ります。

Javaで使用される変数は「プリミティブ型」以外には、「クラス型」と呼ばれるものがあります。

更に詳しいint型の解説はこちらをご覧ください。

 

Integer型とは

Integer型とは、int型と同じように2147483648~2147483647の範囲にある整数値を保持する変数型です。

しかし、Integer型はint型とは異なる「クラス型」と呼ばれる部類の変数型です。

値だけを持つ「プリミティブ型」の変数であったint型をより便利にした変数型であり、int型をメソッドとして使用できるラッパークラスと呼ばれることもあります。

 

[PR] Javaで挫折しない学習方法を動画で公開中

int型とInteger型の違い

int型とInteger型の変数型の違いについて、見ていきましょう。

int型は「プリミティブ型」と呼ばれる変数型で、Integer型は「クラス型」と呼ばれる変数型です。

int型のようなプリミティブ型変数は、簡潔にいってしまえば、「値だけを持った変数型」のことです。

値だけを持った変数は、整数値だけを持っており、それ以外に何も保持していません。

変数は実際に整数だけでなく、実際にInteger型などの「クラス型」は「メソッド」と呼ばれる便利な関数を持っています。

例えば、”10″などのString型変数をint型に変更したい場合には、Integer型のparseIntメソッドを使って、

int 変数名 = Integer.parseInt(文字列);

などと表すことが可能です。

 

また、次のコードのように直接、String型からint型に変換しようとすると、

String str = "10";
System.out.println(str);
int i = (int)str;

実行結果

エラー: 不適合な型: Stringをintに変換できません:

などのようにエラーが生じることになります。

 

また、int型はnullを代入できないのに対し、int型を拡張したInteger型にはnullを代入することが可能です。

この他にもint型には制限があるのに対し、Integer型にはできることが多くあるので便利な変数型といえるでしょう。

 

int型とInteger型の使い方

int型変数を使う場合は、

int i = 整数値;

と記述しましょう。

 

Integer型変数を使う場合はクラスを扱う場合と同様に、

Integer number = new Integer(整数値)

のように記述してください。

 

また、Integer型からint型に変換したい場合には、

number.intValue()

のように記述してみましょう。

 

int型からInteger型に変換したい場合には、

Integer number = new Integer(i)

もしくは、

Integer number = i

のようにInteger型のオートボクシングと呼ばれる機能を利用して、そのままiを代入すれば変換可能です。

 

Integer型が保持する整数値を比較したい場合は、equalsメソッドを使用してみましょう。

例えば、number1とnumber2という2つのInteger型変数があるとすると、

number1 == number2

では比較できません。そのため、

number1.equals(number2)

のように記述することで比較可能です。

これは、Integer型が単なる値ではなく、オブジェクトとしての変数であることが原因です。

 

加えて、異なる方法で値を比較したい場合には、

number1 > number2

ではなく、

number1.compareTo(number2)

のように記述します。

このメソッドは、

number1 > number2 ならば1

number1 = number2 ならば0

number1 < number2 ならば-1

を返します。

 

実際に書いてみよう

実際にInteger型を使ったコードを書いてみましょう。

今回は、乱数をInteger型で2つ用意して、compareToメソッドを使って大小関係に応じて出力する文字が変わるプログラムを作ります。

以下がプログラムコードです。

import java.util.Random;//乱数生成用のクラスをインポート

public class Sample{
        public static void main(String[] args){

        Random rnd = new Random();//乱数生成用のクラスを用意

        Integer integer1 = rnd.nextInt(11);//乱数の生成

         Integer integer2 = rnd.nextInt(11);//乱数の生成
 
         switch(integer1.compareTo(integer2)){
                 case 1://integer1がinteger2より大きい場合
                         System.out.println(integer1 + ">" + integer2);
                         break;
                 case 0://integer1がinteger2と等しい場合
                         System.out.println(integer1 + "=" + integer2);
                         break;
                 case -1://integer1がinteger2より小さい場合
                         System.out.println(integer1 + "<" + integer2);
                         break;
                 }
         }
}

 

まとめ

今回のポイントは

  • int型は「プリミティブ型」で、Integer型は「クラス型」
  • 「クラス型」であるInteger型にはメソッドなどの便利機能が豊富
  • Integer型の変数を比較するときは、equalsメソッドやcompareToメソッドを使う

となります。

 

以上、javaにおける整数を格納するための変数型であるint型とInteger型について解説しました。

整数以外にも、浮動小数点数など他の変数にも同じような型があるのため、理解しておくと後々役に立つでしょう。

 

執筆してくれたメンター

小倉翔悟 (おぐらしょうご)

AIプログラミングを使って開発を行う大学3年生。

プログラミング歴は約3年。

Pythonは割と好きな方。

JavaもAndroid開発で触れていたりする。

大学では物理学を勉強中。

好きな物理理論は一般相対性理論らしい。

意外と動物が好きだったり、、、。

 

大石ゆかり

Javaにおけるint型とInteger型の違いについて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間で、JavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプを開催しています。

 

また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。