「intはIntegerの略」じゃない? Java初心者が混乱する“根本的な違い”とはJavaの「int」「Integer」を比較【第1回】

「Java」における「int」と「Integer」は、いずれも文字通り整数を扱うための仕組みだ。ただしintとIntegerには根本的な違いがある。それぞれの基本的な特徴を整理しよう。

2023年07月16日 09時30分 公開
[Cameron McKenzieTechTarget]

 プログラミング言語・実行環境の「Java」には、整数を扱うための仕組みとして「int」と「Integer」の2つがある。“字面”だけで判断して「intもIntegerも同じであり、intはIntegerの略に過ぎない」と考えてはいけない。intとIntegerは名称は似ているものの、それぞれの特徴は大きく異なる。どのような違いがあるのか。

実は別物だった「int」と「Integer」 その“端的な違い”はこれだ

 Javaにおいて、intは整数を表すための変数の型(数値や文字列といったデータの種類)を指す。intは、Javaが標準で用意する8つの型「プリミティブ型」の1つだ。

 Integerは、フィールド(データ)とメソッド(処理)をまとめたオブジェクトとして、intを利用できるようにするクラス(オブジェクトの設計図)を指す。このようにオブジェクトとしてプリミティブ型を利用可能にするクラスを「ラッパークラス」と呼ぶ。

 Javaでintの変数を宣言すると、その変数は代入した整数を表すだけだ。それ以外の情報を提供することはない。つまりintについて、以下のことが言える。

  • intの変数はフィールドを持たない
  • intの変数からメソッドを呼び出すことはできない
  • 「equals」を使って、intの変数同士を比較することはできない
    • equalsはIntegerで利用できるメソッド。引数として与えたオブジェクトと、メソッドを呼び出したIntegerオブジェクトの値を比較する。
  • intの変数は継承ができない
    • 継承は、基となるクラスのフィールドやメソッドを引き継いで、新しいクラスを作成すること。

 intの変数は、保持する値を計算や比較に使用することしかできない。以下にintの変数を使ったJavaのソースコード例を示す。

int x = 10; // intの変数「x」を宣言し、初期値として10を代入する。
int y = 20; // intの変数「y」を宣言し、初期値として20を代入する。
int sum = x + y; // intの変数「sum」を宣言し、初期値としてxとyを加算した結果を代入する。
int difference = x-y; // intの変数「difference」を宣言し、xからyを減算した結果を初期値として代入する。
boolean flag = (x == y); // boolean(真偽値を扱う型)の変数「flag」を宣言し、xとyが等しい場合は「true」、異なる場合は「false」を代入する。

 次回は、intとIntegerの違いを掘り下げる。

関連キーワード

Java | プログラミング


TechTarget発 エンジニア虎の巻

米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。

ITmedia マーケティング新着記事

news054.jpg

「Threads」が月間アクティブユーザー1億5000万人を突破 今後Xを追い抜くための最善策は?
Metaはイーロン・マスク氏率いるTwitter(当時)の対抗馬として2023年7月にリリースした...

news060.jpg

Z世代が考える「日本が最も力を入れて取り組むべき課題」1位は「ジェンダー平等」――SHIBUYA109 lab.調査
SDGsで挙げられている17の目標のうち、Z世代が考える「日本が最も力を入れて取り組むべき...

news061.png

高齢男性はレジ待ちが苦手、女性は待たないためにアプリを活用――アイリッジ調査
実店舗を持つ企業が「アプリでどのようなユーザー体験を提供すべきか」を考えるヒントが...