プログラミングにおいて数値を管理する変数型はいくつかあるな。
その中でも整数値を保持する変数型が「int」と「Integer」ですが、初心者だとこの2つの違いがわからないこともあるでしょう。
今回は「int」と「Integer」の違いについて、現役エンジニアおおつけと一緒に解説していきます。

ライター/おおつけ

現役システムエンジニア兼ライター。前職は貿易商社の営業マン。知らない言葉は徹底的に調べるクセがあり、独自の単語帳を作っている。日々たくわえた広い知識を、わかりやすく紹介していく。

intとIntegerの違い

image by iStockphoto

プログラミングにおいて整数値を保持する変数型「int」と「Integer」。プログラミング言語によってはどちらか一方しか使えないものもあり、混同しがちな変数型と言えるでしょう。ここではまず「int」と「Integer」の違いについて解説していきます。

int:プリミティブ型

「int」は整数値を保持するプリミティブ型の変数型です。「プリミティブ(primitive)」とは「原始的」という意味。では何が「原始的」なのかというと、値をメモリに直接保存しているのです。例えば「int number」という変数を宣言すると、「number」という変数は常に設定値を持つことになります。

Integer:オブジェクト型

「Integer」は整数値を保持するオブジェクト型(クラス型とも呼ばれる)の変数型です。「オブジェクト(object)」とは「対象」を意味します。

プリミティブ型との違いは、値をメモリに保存するのではなく、ヒープ領域に保存する点です。ヒープ領域とはデータの仮置き場と言える場所で、OSからソフトウェアに対して一定量与えられる領域。このヒープ領域の参照先アドレスを保持しているのがオブジェクト型です。

intとIntegerの特徴

image by iStockphoto

「int」と「integer」の変数型が違うことはおわかりいただけたと思います。では具体的にプログラミングにおいてはどのような差異が出てくるのでしょうか。ここでは「int」と「Integer」それぞれの特徴について解説していきます。

\次のページで「int:NULLは設定不可」を解説!/

int:NULLは設定不可

「int」は値としてNULLを設定することができません。値がない場合は「0」を設定する必要があります。プリミティブ型の変数はインスタンス(実体)がなければ変数として存在できません。メモリに保存するインスタンスがないのであれば変数が存在する意味がないからです。

原始的な世界においては、「0」を数値として扱っても、NULL(無)を数値としては扱わないと考えられるでしょう。

Integer:NULLを設定可能

「Integer」は値としてNULLを設定することができます。オブジェクト型の別名はクラス型ですが、そもそもクラスとは抽象、つまり設計図そのものであってインスタンス(実体)ではありません。

「Integer」クラスは「整数値を保持する設計図」であり、有効な値が設定されて初めて「整数値のインスタンス」を生み出すことができます。つまりインスタンスがないうちはNULL(無)が許容されるのです。

intとIntegerの使い分け

image by iStockphoto

「int」と「Integer」は同じ整数値を扱う変数型であっても、考え方に大きな違いがあることがおわかりいただけたと思います。では両者が共存しているプログラミング言語においてはどのように使い分ければいいのでしょうか。ここでは「int」と「Integer」の使い分けについて解説してきます。

整数値の計算しかしないならint

基本的に整数値の計算しかしないなら「int」を使用していて問題ないでしょう。電卓にNULLがないように、一般的な計算の世界でNULL(無)を用いることはありません。

またソフトウェアにおけるヒープ領域は限られており、オブジェクトを大量に作るようなプログラムを動かすのであれば、極力ヒープ領域は節約すべきと言えます。そのためプリミティブ型の「int」が処理効率的にも優れていると言えるでしょう。

文字列化するならInteger

整数値を文字列として扱うことがあるなら「Integer」にした方が良いでしょう。なぜなら「Integer」自体はインスタンスを持たないので、文字列型の「String」への変換がヒープ領域側で完結するからです。「Integer」が持っているのは抽象的な「1」であり、その抽象を「String」クラス(設計図)を介して文字列"1"に作り替えることができます。

また他の数値型(long、short、doubleなど)への変換も「int」では不可ですが「Integer」であれば可能。簡単に言えば、整数値以外の変数型に変換する可能性があるならIntegerにしておくべきと言えるでしょう。

\次のページで「intとIntegerの相互変換も可能」を解説!/

intとIntegerの相互変換も可能

実は「int」型の値を「Integer」型にすることも、「Integer」型の値を「int」型の値にすることも可能です。前者はプリミティブ型→オブジェクト型後者はオブジェクト型→プリミティブ型の変換に該当し、それぞれオートボクシングアンボクシングと言います。

注意点としてはアンボクシングの際にNULLは許容されないということです。「Integer」の値にNULLが設定されている状態で「int」の値に変換しようとすると、「intの値にはインスタンスが必要だが、今のIntegerの値にはインスタンスがないから変換できない」ことになり例外が発生します。

intはプリミティブ型、Integerはオブジェクト型

ここまで「int」と「Integer」の違い、それぞれの特徴、そしてプログラミング時の使い分け方まで解説してきました。同じ整数値を扱う変数型で、ここまで大きな違いがあったのかと驚かれたのではないでしょうか。

プログラミング言語によっては「int」しかなかったり、「Integer」しかなかったりする言語もあります。それぞれ言語の目的や思想によってある程度機能を制約する必要があるからです。だからこそ、両方を使える状況ではプログラマが正しい知識をもって使い分ける必要があるんですね。

" /> 3分で簡単にわかるintとIntegerの違い!変換できる?プログラミングでの使い分けも現役エンジニアがわかりやすく解説 – Study-Z
IT・プログラミング雑学

3分で簡単にわかるintとIntegerの違い!変換できる?プログラミングでの使い分けも現役エンジニアがわかりやすく解説

プログラミングにおいて数値を管理する変数型はいくつかあるな。
その中でも整数値を保持する変数型が「int」と「Integer」ですが、初心者だとこの2つの違いがわからないこともあるでしょう。
今回は「int」と「Integer」の違いについて、現役エンジニアおおつけと一緒に解説していきます。

ライター/おおつけ

現役システムエンジニア兼ライター。前職は貿易商社の営業マン。知らない言葉は徹底的に調べるクセがあり、独自の単語帳を作っている。日々たくわえた広い知識を、わかりやすく紹介していく。

intとIntegerの違い

image by iStockphoto

プログラミングにおいて整数値を保持する変数型「int」と「Integer」。プログラミング言語によってはどちらか一方しか使えないものもあり、混同しがちな変数型と言えるでしょう。ここではまず「int」と「Integer」の違いについて解説していきます。

int:プリミティブ型

「int」は整数値を保持するプリミティブ型の変数型です。「プリミティブ(primitive)」とは「原始的」という意味。では何が「原始的」なのかというと、値をメモリに直接保存しているのです。例えば「int number」という変数を宣言すると、「number」という変数は常に設定値を持つことになります。

Integer:オブジェクト型

「Integer」は整数値を保持するオブジェクト型(クラス型とも呼ばれる)の変数型です。「オブジェクト(object)」とは「対象」を意味します。

プリミティブ型との違いは、値をメモリに保存するのではなく、ヒープ領域に保存する点です。ヒープ領域とはデータの仮置き場と言える場所で、OSからソフトウェアに対して一定量与えられる領域。このヒープ領域の参照先アドレスを保持しているのがオブジェクト型です。

intとIntegerの特徴

image by iStockphoto

「int」と「integer」の変数型が違うことはおわかりいただけたと思います。では具体的にプログラミングにおいてはどのような差異が出てくるのでしょうか。ここでは「int」と「Integer」それぞれの特徴について解説していきます。

\次のページで「int:NULLは設定不可」を解説!/

次のページを読む
1 2 3
Share: