Javaのint型がわかる!初心者向け基礎知識と使い方ガイド

この記事のポイント

Javaでプログラミングを始めると、すぐに「int」という言葉に出会います。

intは、整数(小数点のない数)を扱うための基本的な型です。「年齢は25歳」「リンゴは3個」といった数を、プログラムの中で表現するときに使います。

この記事を読むと、次のようなことがわかります。

  • int型で扱える数の範囲
  • int型と他の数値型との使い分け
  • 変数の宣言と初期化の方法
  • よくあるエラーの防ぎ方
  • 計算や比較、文字列への変換など、実際の使い方

数を扱えるようになると、プログラミングでできることがぐっと広がります。

「int型って何?」「どうやって使うの?」という疑問を、一つずつ解消していきましょう。

目次

intの基本

プログラムを書いていると、数を扱いたい場面にたくさん遭遇します。

「ループを10回繰り返したい」
「ユーザーの年齢を保存したい」
「計算結果を表示したい」

など、数はプログラムのあらゆる場面で登場するからです。

そんなとき、Javaでは「int型」を使って整数を扱います。int型は、Javaで整数を扱う際に最も頻繁に使われるデータ型です。

ここでは、int型の基本的な意味や扱える数の範囲、他の数値型との関係について見ていきましょう。

【関連】
Javaをもっと詳しく学ぶならpaizaラーニング

int型の意味

int型は、整数を表すためのデータ型です。

「データ型」という言葉が難しく感じるかもしれませんが、「どんな種類のデータか」を表すものだと考えてください。整数なら「int型」、文字列なら「String型」という具合です。

int型は、年齢や個数、ループの回数など、小数点を含まない数を扱う場面で使います。Javaで整数を扱う際の、最も基本的なデータ型です。

public class Main { public static void main(String[] args) { int count = 10; int age = 25; System.out.println(count); System.out.println(age); } }

出力結果

10
25

このプログラムでは、countという名前の変数に10を代入し、ageという変数に25を代入しています。

intという言葉が「この変数には整数を代入しますよ」という宣言になっているのです。

扱える数値の範囲

int型で扱える数には、実は上限と下限があります。

具体的には、-2,147,483,648から2,147,483,647までです。
およそマイナス21億からプラス21億まで、と覚えておくといいでしょう。

「そんなに大きな数、使わないのでは?」と思うかもしれませんが、意外と超えてしまうことがあります。この範囲を超える計算をすると、「オーバーフロー」という現象が起き、予想外の値になってしまいます。

public class Main { public static void main(String[] args) { int maxValue = 2147483647; int overflow = maxValue + 1; System.out.println(overflow); } }

出力結果

-2147483648

最大値に1を足したら、最小値に戻ってしまいました。これがオーバーフローです。

大きな数を扱う場合は、より広い範囲をカバーできる「long型」という別の型を使います。

他の数値型との関係

実は、整数を扱う型はint以外にもあります。

Javaで整数を扱える型はbyte、short、int、longという4種類です。それぞれ扱える数の範囲が違います。

型名

サイズ

最小値

最大値

byte

8ビット

-128

127

short

16ビット

-32,768

32,767

int

32ビット

-2,147,483,648

2,147,483,647

long

64ビット

-9,223,372,036,854,775,808

9,223,372,036,854,775,807

どれを使えばいいか迷ったら、intを使いましょう。intは汎用性が高く、特別な理由がない限り整数の標準的な選択肢です。メモリ使用量を抑えたいケースであればbyteやshort、より大きな数が必要な場合にはlongを選びましょう。

初期値と宣言時の注意点

変数を使うには、まず「宣言」という作業が必要です。

宣言とは、「これから整数を入れる箱を用意します」とJavaに伝えることです。変数は、よく箱に例えられます。その箱に実際に値を入れることを「初期化」といいます。この宣言と初期化のやり方を間違えると、エラーが出てしまいます。

ここでは、int型変数の正しい宣言方法と、初期化の考え方、よくあるミスについて見ていきましょう。

初期値の考え方

変数を作ったとき、「最初にどんな値が入っているか」は場所によって違います。

クラスのフィールド(クラスの中、メソッドの外で宣言した変数)として作った場合、自動的に0が入ります。一方、メソッドの中で作った変数(ローカル変数)には、最初は何も入っていません。

この違いを知らないと、「なぜかエラーが出る......」と悩むことになります。

public class Main { public static void main(String[] args) { Sample sample = new Sample(); sample.method(); } } class Sample { int fieldValue; void method() { int localValue = 0; System.out.println(fieldValue); System.out.println(localValue); } }

出力結果

0
0

フィールドは自動的に0で初期化されますが、ローカル変数は使う前に必ず値を入れる必要があります。

宣言と代入の基本

int型の変数を作るには、intというキーワードの後に変数名を書きます。

宣言と同時に値を入れることもできますし、宣言してから後で値を入れることもできます。

public class Main { public static void main(String[] args) { int number1 = 100; int number2; number2 = 200; System.out.println(number1); System.out.println(number2); } }

出力結果

100
200

宣言と同時に値を入れる方が、「この変数は最初からこの値を持っている」ということが明確になるため、バグを防ぎやすくなります。

この例では、宣言と代入が近い場所にあるので、ひと目でわかります。

しかし、実際のプログラムではコードが長くなると、「あれ、この変数にはいつ値が入ったんだっけ?」と混乱することがあるので注意です。

未初期化時の注意

メソッドの中で作った変数(ローカル変数)を、値を入れずに使おうとすると、コンパイルエラーが出ます。

「この変数には、まだ値が入っていません!」とコンパイラが教えてくれるのです。これはエラーではありますが、実は安全装置として働いています。

public class Main { public static void main(String[] args) { example(); } static void example() { int value; // System.out.println(value); value = 10; System.out.println(value); } }

出力結果

10

初期化していない変数を使おうとすると、プログラムが実行される前にエラーとして警告してくれます。

試しに、コメントアウトされた// System.out.println(value);の//を消去して実行してみてください。

この仕組みのおかげで、「値が入っていない変数を使ってしまう」というバグを防げるのです。

intと他の型との違い

先述した通り、整数を扱う型はintだけではありません。それぞれ用途が違います。似ている型との違いを知っておくと、int型をより理解できるでしょう。

ここでは、Integerやlong型との違い、そして状況に応じた型の選び方について説明します。

Integerとの違い

intとIntegerは名前が似ていますが、実は別物です。Integerは「ラッパークラス」と呼ばれるものです。

ところで、先ほど登場した4種類の整数型(byte、short、int、long)を思い出してください。

実は、この4つは「プリミティブ型」と呼ばれるグループに属しています。プリミティブ型は、値そのものをシンプルに扱う型です。余計な機能を持たない分、動作が速くてメモリも節約できます。

一方、ラッパークラスはプリミティブ型の値を「オブジェクト」として扱えるようにしたものです。

「intをラップ(包む)してIntegerにする」というイメージです。

簡単にいうと、次のような特徴の違いがあります。

  • int(プリミティブ型): 数そのもの(シンプルで速い)
  • Integer(ラッパークラス): 数を箱に入れたもの(機能が多いが少し重い)

単純な計算や比較では、intを使う方が効率的です。

しかし、「nullを扱いたい」「リストなどのコレクションに入れたい」という場面では、Integerを使う必要があります。

public class Main { public static void main(String[] args) { int primitive = 10; Integer wrapper = Integer.valueOf(20); System.out.println(primitive); System.out.println(wrapper); } }

出力結果

10
20

intは= 10のように直接数値を代入できますが、IntegerはInteger.valueOf(20)というメソッドを使っています。なぜでしょうか?

これは、intがシンプルな値なのに対し、Integerはオブジェクト(もっと複雑なもの)だからです。ただ、実はInteger wrapper = 20;のように直接代入することもできます。Javaが自動的に変換してくれるのです。

このラッパークラスの理解というのは、初心者にとって難所の一つです。最初のうちは、「普段はintを使い、必要なときだけIntegerを使う」という理解だけでも十分です。

longとの違い

long型は、int型よりも大きな整数を扱える型です。int型の範囲(約マイナス21億からプラス21億)を超える計算が必要な場合や、データベースの大きなIDなどを扱うときに使います。

ただし、long型はint型の2倍のメモリを使います。必要がない限り、int型を使う方が効率的です。

public class Main { public static void main(String[] args) { int small = 1000000; long large = 10000000000L; System.out.println(small); System.out.println(large); } }

出力結果

1000000
10000000000

long型の数値を書くときは、最後に「L」を付けます。この「L」がないと、Javaは「int型の数値」だと判断し、エラーになってしまうからです。

桁数と選び方

どの型を使えばいいか迷ったときの判断基準を見てみましょう。

想定ケースと、それに適した型は次の通りです。

ケース

推奨する型

ループカウンタや一般的な計算

int

データベースの大きなID

long

メモリ制約が厳しい小さな値

byte, short

基本的には、まずintを使って、範囲が足りなくなったらlongを検討する、という流れで大丈夫です。

byteやshortは、特殊な事情がない限り使う機会は少ないでしょう。迷ったら、intを選んでおけば間違いありません。

比較や計算での使い方

int型が本領発揮するのは、やはり計算や比較をするときです。

「AとBはどちらが大きい?」
「この数は10以上?」

といった判定や、足し算、引き算などの計算処理で、int型は頻繁に使われます。

ここでは、数値の比較方法、計算時の注意点、条件分岐での活用例について見ていきましょう。

数値の比較方法

int型の値を比較するには、比較演算子を使います。

「等しいかどうか」を調べるときは==、「大小関係」を調べるときは<や>を使います。

これらの演算子は、真偽値(trueかfalse)を返します。

public class Main { public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a == b); System.out.println(a < b); } }

出力結果

false
true

a == bは「aとbは等しい」という意味で、10と20は等しくないのでfalse(偽)になります。

a < bは「aはbより小さい」という意味で、10は20より小さいのでtrue(真)になります。

こういった比較は、if文などの条件分岐でよく使われます。この基本的な比較演算子は必ず覚えておきましょう。

ちなみに、a = bだと意味が全く変わってしまうので注意してください。
=が一つだけだと「代入」になってしまいます。

つまり「bの値をaに入れる」という意味です。比較するときは必ず==(イコール2つ)を使いましょう。

計算時の注意点

int型同士で計算すると、結果もint型になります。

これは便利なのですが、割り算のときに注意が必要です。int型同士の割り算では、小数点以下が切り捨てられてしまいます。

public class Main { public static void main(String[] args) { int division = 10 / 3; int large1 = 2000000000; int large2 = 2000000000; int overflow = large1 + large2; System.out.println(division); System.out.println(overflow); } }

出力結果

3
-294967296

10÷3は本当は3.333...ですが、int型では3になります。小数点以下が切り捨てられるのです。

もう一つ注意したいのが、オーバーフローです。範囲を超える計算をすると、予想外の値になってしまいます。

20億 + 20億 = 40億のはずですが、int型の範囲(約21億まで)を超えてしまい、おかしな値になっているのが確認できるはずです。

大きな数の計算が必要な場合は、long型を使うか、範囲に収まるかチェックする必要があります。

条件分岐での利用

if文やswitch文などの条件分岐で、int型を活用できます。

「特定の値や範囲に応じて処理を切り替えたい」というとき、比較演算子と組み合わせて使います。

public class Main { public static void main(String[] args) { int score = 85; if (score >= 80) { System.out.println("ネコ"); } else { System.out.println("イヌ"); } } }

出力結果

ネコ

scoreが80以上なら「ネコ」、そうでなければ「イヌ」を表示するプログラムです。

このように、int型と比較演算子を組み合わせることで、プログラムの動作を柔軟に制御できます。プログラミングに触れていると、この形は幾度となく目にすることになります。それだけint型は重要な役割を果たしているのです。

ちなみに、条件分岐はループの回数を管理したり、ユーザーの入力に応じて処理を変えたりと、使い道は実に多岐にわたります。int型と同じくプログラミングの根幹をなす仕組みだといえます。

stringへの変換と連携

プログラムを作っていると、「計算結果を画面に表示したい」「数値を含むメッセージを作りたい」という場面が出てきます。そんなとき、int型の数値を文字列(String型)に変換する必要があります。Javaでは、int型とString型を相互に変換する方法がいくつか用意されています。

ここでは、変換の基本的な方法や他の型との組み合わせについて見ていきましょう。

string変換の基本

int型をStringに変換するには、いくつかの方法があります。

代表的なのが、String.valueOf()メソッドとInteger.toString()メソッドです。どちらも数値を文字列に変換してくれます。

public class Main { public static void main(String[] args) { int number = 123; String str1 = String.valueOf(number); String str2 = Integer.toString(number); System.out.println(str1); System.out.println(str2); } }

出力結果

123
123

結論からいうと、どちらを使っても結果は同じです。好みで選んで大丈夫ですが、String.valueOf()の方がよく使われます。変換後の文字列は、他の文字列と連結したり、ファイルに書き出したりできます。

ちなみに、2つのメソッドの違いが気になる方もいると思うので、簡単にその違いに触れておきましょう。その大きな違いは、引数(渡すデータ)が「空っぽ(null)」だったときの挙動です。Integer.toString()にnullを渡すとエラーが起きますが、String.valueOf()は問題なく動きます。

ただし、初心者のうちはここまで踏み込んだ内容を覚えていなくても大丈夫です。まずは「数値を文字列に変換できる」ということだけ理解していれば十分です。

表示や出力での利用

実は、System.out.println()で数値を表示するとき、わざわざ文字列に変換しなくても大丈夫です。

Javaが自動的に文字列に変換してくれるからです。

public class Main { public static void main(String[] args) { int count = 5; System.out.println("カウント: " + count); } }

出力結果

カウント: 5

文字列と数値を+でつなぐと、自動的にcountが文字列に変換され、「カウント: 5」という一つの文字列になっています。これは便利な機能ですが、その挙動をあらかじめ知っておくと思わぬ間違いを防げます。変数の状態を確認したいときなど、デバッグの際にもよく使う書き方です。

他の型との組み合わせ

int型は、String型以外の数値型とも組み合わせて使えます。例えば、int型とlong型を計算すると、結果は自動的にlong型になります。「小さい型 + 大きい型 = 大きい型」というルールです。

public class Main { public static void main(String[] args) { int value = 100; String message = "値は" + value + "です"; long large = 1000L; long result = value + large; System.out.println(message); System.out.println(result); } }

出力結果

値は100です
1100

最初の行では、intが自動的にStringに変換されて連結されています。2行目では、intとlongの計算結果がlong型になっています。

こうした型の自動変換を「暗黙の型変換」といいます。Javaが状況に応じて適切に型を変換してくれるので、多くの場合は意識する必要がありません。

ただし、こうした変換のルールを知っておくと、エラーが出たときに原因がわかりやすくなります。

よくある質問(Q&A)

Q: int型で小数を扱えますか?

A: int型は整数専用のため、小数点以下の値は扱えません。小数が必要な場合は、doubleやfloat型を使用します。

public class Main { public static void main(String[] args) { double decimal = 3.14; System.out.println(decimal); } }

出力結果

3.14

Q: intとIntegerはどう使い分けますか?

A: 基本的にはintを使い、特別な理由があるときだけIntegerを使います。

Integerが必要なのは、「nullを扱いたい」「コレクション(リストなど)に入れたい」という場面です。パフォーマンスを重視する計算ではintが適しています。

public class Main { public static void main(String[] args) { Integer obj = null; if (obj == null) { System.out.println("ウサギ"); } } }

出力結果

ウサギ

Q: int型の最大値を超えたらどうなりますか?

A: オーバーフローが発生し、最小値に折り返します。大きな数値を扱う場合は、long型への変更を検討してください。

public class Main { public static void main(String[] args) { int max = 2147483647; int over = max + 1; System.out.println(over); } }

出力結果

-2147483648

Q: 文字列をintに変換する方法は?

A: Integer.parseInt()メソッドを使います。

ただし、変換できない文字列(「abc」など)を渡すとエラー(例外)が発生し、プログラムが止まってしまいます。そのため、入力値が本当に数字かどうか確認してから変換することが大切です。

public class Main { public static void main(String[] args) { String str = "456"; int num = Integer.parseInt(str); System.out.println(num); } }

出力結果

456

まとめ

int型は、Javaで整数を扱うための基本的なデータ型です。

「年齢を保存したい」
「ループを10回繰り返したい」
「計算結果を表示したい」

など、プログラミングのありとあらゆる場面で使います。

今回学んできた内容を振り返ってみましょう。

int型の基本

  • 扱える範囲は約マイナス21億からプラス21億まで
  • クラスのフィールドは、自動的に0で初期化される
  • メソッド内のローカル変数は、使う前に必ず初期化が必要

int型と他の型との違い

  • Integerはラッパークラスで、nullやコレクションに対応
  • long型はより大きな数を扱える
  • 計算時のオーバーフローや除算の切り捨てに注意

実践的な使い方

  • 比較演算子と組み合わせて、条件分岐に活用できる
  • String型との相互変換で表示や出力が簡単にできる
  • 他の数値型との計算では、自動的に型変換される

最初は「intって何?」と戸惑っていたかもしれません。しかし、今回の記事を通して、どういうものかわかったのではないでしょうか?
実際にコードを書いて動かしてみると、さらに感覚がつかめてきます。

エラーが出たときは、「値を入れ忘れていないか」「範囲を超えていないか」をチェックしてみましょう。
この記事で紹介したポイントを押さえておけば、多くのエラーを自分で解決できるはずです。

int型をマスターすると、Javaのプログラミングスキルの基礎が固まります。計算処理や条件分岐など、プログラムの核となる部分を自由に書けるようになるでしょう。

ぜひ今回の記事をきっかけに、更なるステップアップにつなげてください。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. ナレッジ
  3. Javaのナレッジ記事一覧
  4. Javaのint型がわかる!初心者向け基礎知識と使い方ガイド