Javaにおけるint型とInteger型の違いを現役エンジニアが解説【初心者向け】
初心者向けにJavaでint型とInteger型の違いについて解説しています。これらはどちらも整数の変数型ですが、その性質についていくつかの違いがあります。int型とInteger型、それぞれの特徴について学びましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Javaにおけるint型とInteger型の違いについて、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
目次
そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
今回は、Javaに関する内容だね!
どういう内容でしょうか?
int型とInteger型の違いについて詳しく説明していくね!
お願いします!
int型とは
int型とは、-2147483648~2147483647の範囲にある整数値を保持するための32ビットの変数型です。
int型は「プリミティブ型」と呼ばれる部類に属す変数です。
プリミティブというのは英語で「原始の」、「初期の原始の」、「初期の」といった意味を持つ単語で、”primitive”とつづります。
Javaで使用される変数は「プリミティブ型」以外には、「クラス型」と呼ばれるものがあります。
さらに詳しいint型の解説はこちらをご覧ください。
Integer型とは
Integer型とは、int型と同じように–2147483648~2147483647の範囲にある整数値を保持する変数型です。
しかし、Integer型はint型とは異なる「クラス型」と呼ばれる部類の変数型です。
値だけを持つ「プリミティブ型」の変数であったint型をより便利にした変数型であり、int型をメソッドとして使用できるラッパークラスと呼ばれることもあります。
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型のオートボクシングと呼ばれる機能を利用して、そのままiを代入すれば変換可能です。
Integer number = 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; } } }
まとめ
今回のポイントは、以下の3つです。
- int型は「プリミティブ型」で、Integer型は「クラス型」
- 「クラス型」であるInteger型にはメソッドなどの便利機能が豊富
- Integer型の変数を比較するときは、equalsメソッドやcompareToメソッドを使う
以上、Javaにおける整数を格納するための変数型であるint型とInteger型について解説しました。
整数以外にも、浮動小数点数など他の変数にも同じような型があるのため、理解しておくと後々役に立つでしょう。
執筆してくれたメンター
mentor-k
独立系SIerに入社してシステム開発を主に従事。 フルスタックエンジニアとしてJava, C#, Python, HTML/CSS, JavaScriptなど多言語に対応しつつ、AWSやAzureなどインフラ周りまで幅広く行っている。 現在はPMとしてプロジェクト管理からお客様との要件検討など上流工程までカバー。 テックアカデミーではJavaコース、WordPressコースを担当。 初心者でも分かりやすい説明を心掛けております。 |
Javaにおけるint型とInteger型の違いについて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
Javaを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのJavaコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaやServletの技術を使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!