Java入門|文字列を整数に変換するIntegerクラスの使い方

文字列を数値に変えられるようになると、入力データを本当に使える形にできる

Javaでキーボード入力を扱うようになると、数字を入力したつもりでも、実際には文字列として受け取っていることに気づきます。たとえば、画面に 25 と入力しても、そのままでは計算に使える整数ではなく、文字の並びとして扱われています。このままでは足し算や比較が思った通りにできません。

そこで登場するのが Integerクラス です。Integerクラスには、文字列を整数に変換するための便利な機能が用意されています。これまでにも入力処理の中で Integer.parseInt() を使ってきたことがあるかもしれませんが、ここではその意味を改めて整理しながら、どうしてこのクラスが必要なのか、どんな場面で役立つのかをしっかり見ていきます。

文字列を整数に変換できるようになると、入力された年齢や点数、個数などを本物の数値として扱えるようになります。これは、Javaで実用的なプログラムを作るうえでとても大切な一歩です。ここでは Integerクラスの基本から、parseInt() メソッドや valueOf() メソッドの使い方まで、やさしく丁寧に整理していきます。

Integerクラスとは何か

Integerクラスは、int型に関係する機能をまとめたクラスです。Javaには、数値を表す基本型として int がありますが、Integerクラスはその int をクラスとして扱いやすくした存在です。

このようなクラスは、ラッパクラス と呼ばれます。ラッパという言葉には、包む、くるむという意味があります。つまり、基本型をそのまま使うだけではなく、クラスとして機能を持たせて扱えるようにしたもの、と考えると分かりやすいです。

たとえば、int に対応するラッパクラスが Integer です。

ラッパクラスとは何か

Javaには、基本型ごとに対応するラッパクラスがあります。Integerクラスもそのひとつです。

主なラッパクラスを表にまとめると、次のようになります。

ラッパクラス対応する基本型
Bytebyte
Characterchar
Shortshort
Integerint
Longlong
Floatfloat
Doubledouble

この表を見ると分かるように、基本型にはそれぞれ対応するクラスがあります。今回注目する Integerクラス は、その中でも整数を扱うための代表的なラッパクラスです。

なぜ文字列を整数に変換する必要があるのか

キーボードから入力した内容は、たとえ数字を入力しても最初は文字列として受け取られます。たとえば、8 と入力しても、それはまだ数字の 8 ではなく、文字としての 8 です。

この違いはとても大切です。

入力された内容受け取った直後の型そのままではできないこと
25String数値としての計算
100String数値比較
7Stringint型の変数へのそのままの代入

つまり、数値として使いたいなら、文字列から整数へ変換する必要があります。そこで活躍するのが Integer.parseInt() です。

parseInt() メソッドの役割

Integerクラスで最もよく使うのが parseInt() メソッドです。このメソッドは、文字列を整数に変換して返す クラスメソッドです。

書き方は次のようになります。

int 変数名 = Integer.parseInt(文字列変数);

たとえば、

String str = "25";
int num = Integer.parseInt(str);

と書くと、str に入っている 25 という文字列が、整数の 25 に変換されて num に入ります。

ここで大事なのは、parseInt() は Integerクラスのオブジェクトを作らなくても使える という点です。これはクラスメソッドだからです。

クラスメソッドとして使う意味

parseInt() は、インスタンスメソッドではなく クラスメソッド です。そのため、new を使って Integer型のオブジェクトを作らなくても使えます。

つまり、次のように直接クラス名をつけて呼び出します。

Integer.parseInt(str)

この形は、これまで学んだクラスメソッドの考え方と同じです。

種類呼び出し方
インスタンスメソッドオブジェクト名.メソッド名()str.length()
クラスメソッドクラス名.メソッド名()Integer.parseInt(str)

この違いを意識できると、Javaのクラスライブラリがかなり読みやすくなります。

シンプルな例で見てみよう

import java.io.*;

class Main {
    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) + " 人です。");
    }
}

このプログラムでは、入力された人数を文字列として受け取り、それを Integer.parseInt() で整数に変換しています。変換できたからこそ、num * 3 のような計算ができるようになります。

たとえば、4 と入力した場合、表示結果は次のようになります。

人数を入力してください。
4
3グループ分の人数は 12 人です。

もし変換せずに文字列のまま扱っていたら、このような数値計算はできません。

プログラムの流れを整理しよう

このプログラムの流れを表にすると、処理の意味がさらに分かりやすくなります。

順番処理内容説明
1BufferedReader を用意する入力の準備をする
2br.readLine()入力内容を文字列として受け取る
3Integer.parseInt(str)文字列を整数に変換する
4計算して表示する整数として扱えるので計算ができる

この流れからも、文字列を整数に変えることが、計算処理の入口になっていることが分かります。

文字列のままと整数では何が違うのか

この違いは初心者にとってとても大切なので、少し丁寧に見ておきましょう。

たとえば、2 と 3 を入力として考えます。

文字列のままのイメージ

  • "2"
  • "3"

これは数字の見た目をした文字です。

整数に変換した後のイメージ

  • 2
  • 3

こちらは本当の数値です。

この違いを表で整理すると、次のようになります。

データ特徴
"15"String文字の並び
15int計算できる数値

つまり、Integer.parseInt() は 見た目は数字でも、まだ文字列であるデータを、本当に計算できる整数へ変える 役割を持っています。

parseInt() はどんな値を返すのか

parseInt() の戻り値は int型 です。ここはとても重要です。

int num = Integer.parseInt("30");

このコードでは、戻り値として 30 という int型の値が返されます。そのため、そのまま int型の変数に代入できます。

戻り値を整理すると、次のようになります。

メソッド引数戻り値
Integer.parseInt(String s)文字列int型の整数

この表のように、String を受け取り、int を返すメソッドだと覚えると分かりやすいです。

valueOf() メソッドとは何か

Integerクラスには parseInt() のほかに valueOf() というクラスメソッドもあります。このメソッドは、文字列の値をもとに Integerオブジェクト を返します。

書き方は次のようになります。

Integer obj = Integer.valueOf("25");

この場合、戻り値は int型ではなく、Integer型のオブジェクトです。

parseInt() との違いを整理すると、次のようになります。

メソッド戻り値用途のイメージ
parseInt(String s)int数値としてすぐ使いたいとき
valueOf(String s)IntegerInteger型のオブジェクトとして扱いたいとき

学習の初期段階では、まず parseInt() をしっかり使えるようになることが大切です。valueOf() は、Integer型のオブジェクトが必要な場面で使います。

valueOf() も簡単に見てみよう

たとえば、次のように書けます。

class Main {
    public static void main(String[] args) {
        Integer num = Integer.valueOf("18");
        System.out.println("変換結果は " + num + " です。");
    }
}

このコードでは、18 という文字列から Integer型の値を作っています。

ただ、学習段階では「文字列から整数値を得る」という目的なら、まずは parseInt() を中心に理解しておけば十分です。

Integerクラスが入力処理でよく使われる理由

Integerクラスが特によく登場するのは、入力処理と相性がよいからです。キーボード入力では文字列として受け取るのが基本なので、そのあと数値として使いたい場面で必ず変換が必要になります。

たとえば、次のような入力は全部、最初は文字列です。

  • 年齢
  • 点数
  • 個数
  • 金額
  • 人数

こうしたデータを計算や比較に使うには、文字列のままでは困ります。そこで Integer.parseInt() がよく使われるわけです。

この図は、左側の "25" が文字列として扱われていることを表し、それが中央の Integer.parseInt() を通ることで、右側の整数 25 に変わる流れを示しています。見た目はどちらも同じ 25 ですが、左は文字列、右は整数であるという違いが、分かります。

Integerクラスの主なクラスメソッド

今回登場した主なクラスメソッドを表に整理しておきましょう。

メソッド名機能
static int parseInt(String s)文字列を整数に変換して返す
static Integer valueOf(String s)文字列の値をもつIntegerオブジェクトを返す

この2つはどちらもクラスメソッドなので、オブジェクトを作らずに Integer.メソッド名() の形で呼び出せます。

よくある注意点

Integerクラスを使うときには、いくつか気をつけたい点があります。

注意点内容
入力は最初は文字列数字を入力しても String で受け取る
parseInt() は int を返すInteger ではなく int型
valueOf() は Integer を返す戻り値の型が違う
クラスメソッドとして呼び出すnew しなくても使える

特に、parseInt() と valueOf() の戻り値の違いは、混同しやすいポイントです。最初は parseInt() は int、valueOf() は Integer と整理して覚えるとよいです。

実際のプログラムでどう役立つのか

Integerクラスを使えるようになると、文字列として受け取った入力を本格的な計算や判定に使えるようになります。

たとえば、次のような処理につながります。

やりたいことIntegerクラスの役割
点数を入力して合計を出す文字列を整数に変換する
年齢によって条件分岐する比較できる数値に変える
個数から料金を計算する掛け算できる形にする
入力値を数値として保存するint型に変換する

つまり、Integerクラスは 入力された数字を、本当に使える数字に変えるための橋渡し役 だと言えます。

Integerクラスの使い方を理解すると、入力されたデータをただ表示するだけでなく、計算したり、比較したり、条件判断に使ったりできるようになります。Javaで実用的なプログラムを作っていくうえで、とても大切なクラスのひとつです。