
Java道|Integerクラスで文字列を整数に変換する方法
見た目が数字でも、文字列のままでは計算できない。
Integerクラスを使えば、入力された数字を本当に使える整数へ変換できる。
Javaでキーボード入力を扱うようになると、とても大切なことに気づきます。
画面で 25 と入力しても、それは最初から int 型の数値として扱われるわけではありません。
多くの場合、入力された内容は String 型、つまり文字列として受け取られます。
見た目は 25 でも、プログラムの中では 25 という文字の並びです。
そのままでは、足し算や掛け算、大小比較には使いにくい状態です。
鬼滅の刃でたとえると、隊士が「25」と書かれた任務札を提出したようなものです。
札には 25 と書かれていますが、それはまだ「数として使える隊士数」ではなく、「文字として書かれた記録」です。
この文字の札を、計算に使える本物の数値へ変えるために使うのが Integer クラスです。
Integer クラスには、文字列を整数に変換するための便利なメソッドが用意されています。
特によく使うのが Integer.parseInt() です。
このメソッドを使うと、"25" という文字列を、int 型の 25 に変換できます。
すると、入力された人数を3倍したり、点数を比較したり、個数から料金を計算したりできるようになります。
Integerクラスとは何か
Integer クラスは、int 型に関係する機能をまとめたクラスです。
Javaには、整数を表す基本型として int があります。
int は、次のような数値を扱うための型です。
int age = 25;
int score = 80;
int count = 3;一方で、Integer は int に関係する便利な機能を持ったクラスです。
たとえば、文字列を整数に変換する Integer.parseInt() や、Integer 型のオブジェクトを作る Integer.valueOf() などが用意されています。
| 種類 | 例 | 役割 |
|---|---|---|
| int | 25 | 整数を表す基本型 |
| Integer | Integer.parseInt("25") | int に関係する機能を持つクラス |
鬼滅の刃でたとえると、int は実際に数えられる隊士の人数です。
Integer は、文字で書かれた人数札を本物の人数へ変換したり、整数を扱いやすくするための道具箱です。
ラッパクラスとは何か
Integer クラスは、ラッパクラスのひとつです。
ラッパには、包む、くるむという意味があります。
Javaでは、基本型をクラスとして扱いやすくするためのクラスをラッパクラスと呼びます。
int に対応するラッパクラスが Integer です。
| ラッパクラス | 対応する基本型 |
|---|---|
| Byte | byte |
| Character | char |
| Short | short |
| Integer | int |
| Long | long |
| Float | float |
| Double | double |
基本型はシンプルに値を扱うための型です。
一方、ラッパクラスは、その基本型に関係する便利な機能をまとめています。
今回の中心は Integer です。
Integer は、int に関係する処理を扱うクラスです。
特に、文字列から整数へ変換する処理でよく使われます。
鬼滅の刃でたとえると、int は隊士の実人数そのものです。
Integer は、任務札に書かれた文字を読み取り、本当に数として使える形に整える本部の変換道具です。
なぜ文字列を整数に変換する必要があるのか
キーボード入力では、数字を入力しても、最初は文字列として受け取ることが多いです。
たとえば、画面で 8 と入力したとします。
人間から見ると、それは数字の 8 に見えます。
しかし、プログラムでは "8" という文字列として受け取っている場合があります。
| 入力された内容 | 受け取った直後の型 | そのままでは難しいこと |
|---|---|---|
| 25 | String | 数値としての計算 |
| 100 | String | 数値比較 |
| 7 | String | int 型変数へのそのままの代入 |
たとえば、"25" は文字列です。
25 は整数です。
見た目は似ていますが、型が違います。
| データ | 型 | 意味 |
|---|---|---|
| "25" | String | 文字の並び |
| 25 | int | 計算できる整数 |
文字列のままでは、年齢、点数、人数、個数、金額などを本当の数値として扱えません。
鬼滅の刃でたとえると、"25" は「二十五」と書かれた任務札です。
25 は、実際に隊士を25人として数えられる状態です。
任務札に書かれた文字を、そのまま人数計算には使えません。
まず、本部の変換係が「これは25人という数値だ」と読み替える必要があります。
その変換を行うのが Integer.parseInt() です。
parseInt()メソッドの役割
Integer クラスで特によく使うのが parseInt() メソッドです。
parseInt() は、文字列を int 型の整数に変換して返すクラスメソッドです。
基本の形は次のようになります。
int 変数名 = Integer.parseInt(文字列変数);たとえば、次のように書けます。
String str = "25";
int num = Integer.parseInt(str);この場合、str に入っている "25" という文字列が、int 型の 25 に変換されます。
そして、その変換結果が num に入ります。
| コード | 意味 |
|---|---|
| String str = "25"; | 文字列として 25 を持つ |
| Integer.parseInt(str) | 文字列を整数に変換する |
| int num = ... | 変換結果を int 型で受け取る |
parseInt() の戻り値は int 型です。
| メソッド | 引数 | 戻り値 |
|---|---|---|
| Integer.parseInt(String s) | 数字を表す文字列 | int 型の整数 |
鬼滅の刃でたとえると、parseInt() は、任務札に書かれた "25" という文字を、本部の計算台帳で使える 25 という数に変換する技です。
parseInt()はクラスメソッドとして使う
Integer.parseInt() は、クラスメソッドです。
クラスメソッドとは、オブジェクトを作らなくても、クラス名を使って呼び出せるメソッドです。
そのため、parseInt() を使うときに、次のように Integer オブジェクトを作る必要はありません。
Integer.parseInt(str)このように、クラス名 Integer から直接呼び出します。
これまで学んだメソッドの呼び出し方と比べると、違いが分かりやすくなります。
| 種類 | 呼び出し方 | 例 |
|---|---|---|
| インスタンスメソッド | オブジェクト名.メソッド名() | str.length() |
| クラスメソッド | クラス名.メソッド名() | Integer.parseInt(str) |
str.length() は、str という String オブジェクトに対して呼び出しています。
一方で、Integer.parseInt(str) は、Integer クラスそのものに用意された機能を呼び出しています。
鬼滅の刃でたとえると、str.length() は「この巻物自身に文字数を数えさせる」ような処理です。
Integer.parseInt(str) は「鬼殺隊本部の変換係に、文字札を数値に変換してもらう」ような処理です。
特定の Integer オブジェクトにお願いするのではなく、Integer クラスが持っている共通機能を使うイメージです。
キーボード入力から表示するプログラムで確認する
キーボードから人数を入力し、その人数を3グループ分にして表示するプログラムを見てみましょう。
ファイル名:Sample1.java
import java.io.*;
class Sample1
{
public static void main(String[] args) throws IOException
{
// キーボード入力の準備をする
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
// 数字の入力をうながす
System.out.println("任務に参加する隊士の人数を入力してください。");
// 入力内容を文字列として受け取る
String str = br.readLine();
// 文字列を整数に変換する
int num = Integer.parseInt(str);
// 計算して表示する
System.out.println("3部隊分の隊士は " + (num * 3) + " 人です。");
}
}このプログラムでは、まずキーボードから入力された内容を br.readLine() で受け取っています。
String str = br.readLine();br.readLine() の結果は String です。
つまり、画面で 4 と入力しても、最初は "4" という文字列として str に入ります。
そのあと、次の行で整数に変換しています。
int num = Integer.parseInt(str);これで、文字列の "4" が、int 型の 4 に変わります。
だから、次のような計算ができます。
num * 3たとえば、4 と入力した場合、実行結果は次のようになります。
任務に参加する隊士の人数を入力してください。
4
3部隊分の隊士は 12 人です。鬼滅の刃でたとえると、隊士が「4」と書かれた札を提出します。
その札は最初は文字です。
Integer.parseInt() によって、本当に計算できる人数 4 に変換されます。
その結果、3部隊分で 12 人と計算できるようになります。
プログラムの流れを整理する
先ほどのプログラムの流れを表で整理します。
| 順番 | 処理内容 | 説明 |
|---|---|---|
| 1 | BufferedReader を用意する | 入力の準備をする |
| 2 | br.readLine() | 入力内容を文字列として受け取る |
| 3 | Integer.parseInt(str) | 文字列を整数に変換する |
| 4 | num * 3 | 整数として計算する |
| 5 | 結果を表示する | 計算結果を画面に出す |
ここで特に大切なのは、3番目の Integer.parseInt(str) です。
この変換があるからこそ、入力された値を計算に使えます。
もし変換しないままなら、str は String 型です。
String 型のままでは、num * 3 のような数値計算には使えません。
| 状態 | 例 | できること |
|---|---|---|
| 文字列のまま | "4" | 表示はできるが、数値計算には向かない |
| 整数に変換後 | 4 | 掛け算、足し算、比較ができる |
鬼滅の刃でたとえると、文字札のままでは部隊編成の計算に使えません。
人数として数えられる形に変換して、はじめて部隊数の計算ができるようになります。
文字列のままと整数では何が違うのか
初心者が特につまずきやすいのが、文字列の数字と、本物の数値の違いです。
たとえば、次の2つを見比べてみましょう。
String str = "15";
int num = 15;どちらも見た目には 15 です。
しかし、型が違います。
| データ | 型 | 特徴 |
|---|---|---|
| "15" | String | 文字の並び |
| 15 | int | 計算できる数値 |
"15" は、1 と 5 という文字が並んだものです。
15 は、計算に使える整数です。
鬼滅の刃でたとえると、"15" は「十五」と書かれた札です。
15 は、実際に隊士15人として数えられる状態です。
この違いが分かっていないと、入力処理で混乱しやすくなります。
たとえば、ユーザーが 10 と入力した場合でも、最初は "10" という文字列です。
それを計算に使いたいなら、Integer.parseInt() で int 型へ変換する必要があります。
parseInt()はint型の値を返す
parseInt() の戻り値は int 型です。
たとえば、次のコードを見てください。
int num = Integer.parseInt("30");このコードでは、"30" という文字列を Integer.parseInt() に渡しています。
その結果、int 型の 30 が返されます。
| 処理 | 結果 |
|---|---|
| Integer.parseInt("30") | int 型の 30 |
| Integer.parseInt("100") | int 型の 100 |
| Integer.parseInt("7") | int 型の 7 |
戻り値が int なので、次のようにそのまま計算できます。
int num = Integer.parseInt("30");
System.out.println(num + 10);この場合、表示されるのは 40 です。
もし "30" のままでは、数値としての 30 ではありません。
parseInt() によって int 型に変わったからこそ、10 を足す計算ができるわけです。
valueOf()メソッドとは何か
Integer クラスには、parseInt() のほかに valueOf() というクラスメソッドもあります。
valueOf() は、文字列の値をもとに Integer オブジェクトを返すメソッドです。
Integer obj = Integer.valueOf("25");この場合、戻り値は int ではなく Integer です。
parseInt() との違いを整理すると、次のようになります。
| メソッド | 戻り値 | 用途のイメージ |
|---|---|---|
| parseInt(String s) | int | 数値としてすぐ計算したいとき |
| valueOf(String s) | Integer | Integer 型のオブジェクトとして扱いたいとき |
学習の最初の段階では、まず parseInt() をしっかり使えることが大切です。
入力された文字列を整数に変換して計算したいなら、parseInt() が分かりやすいです。
valueOf() は、Integer 型として扱いたい場面で使います。
valueOf()もクラスメソッド
valueOf() も、parseInt() と同じく Integer クラスのクラスメソッドです。
そのため、new を使わずに呼び出せます。
Integer num = Integer.valueOf("18");
System.out.println("変換結果は " + num + " です。");このコードでは、"18" という文字列から Integer 型の値を作っています。
| コード | 意味 |
|---|---|
| Integer.valueOf("18") | 文字列をもとに Integer オブジェクトを返す |
| Integer num = ... | Integer 型の変数で受け取る |
parseInt() と valueOf() はどちらも文字列から数値系の値を作るために使えます。
ただし、戻り値の型が違います。
| 観点 | parseInt() | valueOf() |
|---|---|---|
| 戻り値 | int | Integer |
| よく使う場面 | すぐに計算したい | Integer オブジェクトとして扱いたい |
| 呼び出し方 | Integer.parseInt(str) | Integer.valueOf(str) |
鬼滅の刃でたとえると、parseInt() は札の数字をすぐに部隊計算で使える人数へ変える技です。
valueOf() は、その数字を Integer という専用の管理札として包んで扱う技です。
図:文字列の数字をint型へ変換する
↓クリックすると拡大表示されます。

この図が示していること
この図では、"25" という文字列が Integer.parseInt("25") を通ることで、int 型の 25 に変換される流れを表しています。
左側の "25" は String 型です。
見た目は数字ですが、まだ文字として扱われています。
中央の Integer.parseInt("25") によって、文字列が整数へ変換されます。
右側の 25 は int 型なので、25 * 3 = 75 のような計算に使えます。
ここから分かるのは、見た目が同じ 25 でも、String と int では意味が違うということです。
入力された数字を計算に使うには、Integer.parseInt() で整数へ変換する必要があります。
Integerクラスが入力処理でよく使われる理由
Integer クラスは、入力処理ととても相性がよいクラスです。
理由は、キーボードから入力された内容が、最初は文字列として扱われることが多いからです。
たとえば、次のような入力値があります。
| 入力したい内容 | 最初に受け取る型 | 数値として使うために必要なこと |
|---|---|---|
| 年齢 | String | int に変換する |
| 点数 | String | int に変換する |
| 個数 | String | int に変換する |
| 金額 | String | int に変換する |
| 人数 | String | int に変換する |
年齢や点数、個数や人数は、数値として計算したり比較したりすることが多いです。
たとえば、
- 年齢が18以上か判定する
- 点数が60点以上か調べる
- 商品の個数から合計金額を計算する
- 入力された人数をグループ数で割る
こうした処理では、文字列のままでは不便です。
Integer.parseInt() を使って int 型に変換することで、実用的な計算や判定ができるようになります。
鬼滅の刃でたとえると、隊士が提出した札に 8 と書かれていても、札の文字のままでは部隊編成に使えません。
本部の台帳に登録できる人数として変換して、はじめて部隊数や配置人数を計算できるようになります。
parseInt()とvalueOf()の違いをもう少し整理する
parseInt() と valueOf() は、どちらも文字列を数値に関係する値へ変換します。
ただし、戻り値が違います。
| メソッド | 引数 | 戻り値 | 使い方のイメージ |
|---|---|---|---|
| Integer.parseInt(String s) | String | int | 計算にすぐ使いたい |
| Integer.valueOf(String s) | String | Integer | Integer 型として扱いたい |
たとえば、すぐに掛け算や足し算をしたいなら、parseInt() が分かりやすいです。
int num = Integer.parseInt("4");
System.out.println(num * 3);Integer 型の値として受け取りたいなら、valueOf() を使えます。
Integer num = Integer.valueOf("4");
System.out.println(num);学習の初期段階では、文字列を整数にして計算したい場面が多いので、まず parseInt() を中心に押さえると理解しやすいです。
図:parseInt()とvalueOf()の戻り値の違い
↓クリックすると拡大表示されます。

この図が示していること
この図では、同じ "25" という文字列を変換するときでも、parseInt() と valueOf() では戻り値の型が違うことを表しています。
Integer.parseInt("25") は、int 型の 25 を返します。
そのため、25 * 3 のような計算にすぐ使いやすいです。
一方、Integer.valueOf("25") は、Integer 型のオブジェクトを返します。
Integer 型として扱いたい場面で使います。
ここから分かるのは、parseInt() と valueOf() はどちらも文字列から数値系の値を作るメソッドですが、返す型が違うということです。
最初は、parseInt() は int、valueOf() は Integer と整理すると分かりやすくなります。
よくある注意点
Integer クラスを使うときは、いくつか注意したい点があります。
| 注意点 | 内容 |
|---|---|
| 入力は最初は文字列 | 数字を入力しても String として受け取ることが多い |
| parseInt() は int を返す | Integer ではなく int 型の値を返す |
| valueOf() は Integer を返す | 戻り値の型が parseInt() と違う |
| クラスメソッドとして呼び出す | new しなくても Integer.parseInt(str) と書ける |
| 数字でない文字列は変換できない | "abc" のような文字列は整数にできない |
特に大切なのは、数字として読めない文字列は parseInt() で変換できないという点です。
たとえば、次のような文字列は整数として変換できません。
| 文字列 | 変換できるか |
|---|---|
| "25" | できる |
| "100" | できる |
| "abc" | できない |
| "二十五" | できない |
| "25歳" | そのままではできない |
Integer.parseInt() は、数字として読める文字列を整数に変換するためのメソッドです。
鬼滅の刃でたとえると、札に 25 と数字で書かれていれば人数として読み取れます。
でも、札に 任務開始 や 二十五人 と書かれていると、そのままでは int 型の整数として読み取れません。
実際のプログラムでどう役立つのか
Integer クラスを使えるようになると、入力されたデータをただ表示するだけでなく、計算や条件判断に使えるようになります。
| やりたいこと | Integerクラスの役割 |
|---|---|
| 点数を入力して合計を出す | 文字列を整数に変換する |
| 年齢によって条件分岐する | 比較できる数値に変える |
| 個数から料金を計算する | 掛け算できる形にする |
| 入力値を数値として保存する | int 型に変換する |
| 人数からグループ数を求める | 割り算できる形にする |
たとえば、点数を入力して合格かどうかを判定する場合、入力された点数を int に変換する必要があります。
String str = "80";
int score = Integer.parseInt(str);
if (score >= 60)
{
System.out.println("合格です。");
}このように、文字列を整数に変換できると、比較ができるようになります。
鬼滅の刃でたとえると、隊士の訓練点数が札に書かれているだけでは、合格判定には使いにくいです。
その点数を数値として台帳に登録することで、60以上なら合格、60未満なら再訓練のように判断できるようになります。
Integerクラスを見るときの大切な感覚
Integer クラスを理解するときは、次の感覚を持つと分かりやすいです。
| ポイント | 内容 |
|---|---|
| Integer は int に関係するクラス | int を扱うための便利な機能を持つ |
| parseInt() は文字列を int にする | 入力された数字を計算に使えるようにする |
| valueOf() は Integer を返す | Integer 型として扱いたいときに使う |
| parseInt() はクラスメソッド | Integer.parseInt(str) の形で呼び出す |
| 入力処理でよく使う | readLine() などで受け取った文字列を数値に変える |
鬼滅の刃でたとえると、Integer クラスは、任務札に書かれた数字を、本当に計算できる人数や点数へ変換するための本部道具です。
"25" は文字としての数字です。
25 は計算できる整数です。
この違いを見分け、必要なときに Integer.parseInt() で変換できるようになると、Javaの入力処理は一気に実用的になります。
入力された年齢を判定する。
点数を合計する。
個数から料金を求める。
人数から部隊編成を計算する。
こうした処理は、文字列を整数へ変換できてはじめて自然に書けるようになります。
