Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】文字列(String)をintに変換する方法をサンプルコード付きで解説

Javaで文字列(String)を数値(int)に変換したい場面は非常によくあります。文字列が数字のみで構成されている場合は、Integer.parseInt() または Integer.valueOf() を使うのが最も簡単かつ確実な方法です。

一方、文字列の中に数字と英字が混在している場合は、正規表現を使ってまず数字部分だけを取り出し、その結果得られた文字列をintに変換するという手順が必要になります。

ここで押さえておきたい重要なポイントがあります。parseInt(String) はプリミティブ型の int を返すのに対して、valueOf(String)Integer オブジェクトを返すという違いです。用途に合わせて適切な方を選びましょう。

Javaで文字列をintに変換する4つの方法

方法1:Integer.parseInt() を使う

public class ConvertStringToInt {

    public static void main(String[] args) {
        String stringNumber = "1234";
        int number = convertStringToInt(stringNumber);
        System.out.println(number);
    }

    private static int convertStringToInt(String number) {
        return Integer.parseInt(number);
    }
}

実行結果:

1234

方法2:Integer.valueOf() を使う

public class ConvertStringToInt {

    public static void main(String[] args) {
        String stringNumber = "1234";
        int number = convertStringToInt(stringNumber);
        System.out.println(number);
    }

    private static int convertStringToInt(String number) {
        return Integer.valueOf(number);
    }
}

実行結果:

1234

なお、「1234abcd」のように英字を含む文字列を渡した場合、Javadocに明記されている通り、整数パーサーは NumberFormatException をスローします。ユーザー入力など内容が不確実な値を扱う際は、事前にバリデーションを行うか、try-catchによる例外処理を組み込んでおくことをおすすめします。

  • Javaで toString() をオーバーライドすべき理由
  • Javaで文字列を逆順にする方法
  • 文字列から数値を抽出する方法
  • Javaで文字列を比較する方法

方法3:Integer.decode() を使う

Integer.decode() を使うこともできます。decode の面白い特徴は、10進数(base 10)だけでなく、16進数(base 16)など異なる基数の文字列にも対応している点です。「0x」などのプレフィックス付きの数値文字列も直接変換できるため、柔軟な処理が可能になります。

public class ConvertStringToInt {

    public static void main(String[] args) {
        String stringNumber = "1234";
        int number = convertStringToInt(stringNumber);
        System.out.println(number);
    }

    private static int convertStringToInt(String number) {
        return Integer.decode(number);
    }
}

実行結果:

1234

方法4:Apache Commons の NumberUtils クラスを使う

最後に紹介するのは、Apache Commons Lang が提供する NumberUtils クラスを使う方法です。このクラスの利点は、無効な文字列が渡された場合でも例外をスローせず、デフォルト値(初期値は0)を返してくれるため、安全に変換処理を行えることです。

Mavenプロジェクトの場合は、pom.xml に以下の依存関係を追加してください。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

あとは、次のように呼び出すだけで変換できます。

import org.apache.commons.lang3.math.NumberUtils;

public class ConvertStringToInt {

    public static void main(String[] args) {
        String stringNumber = "1234";
        int number = convertStringToInt(stringNumber);
        System.out.println(number);
    }

    private static int convertStringToInt(String number) {
        return NumberUtils.toInt(number);
    }
}

実行結果:

1234

まとめ

文字列をintに変換する基本は Integer.parseInt() です。Integer オブジェクトとして扱いたい場合は Integer.valueOf()、基数の指定が必要なら Integer.decode()、例外を避けて安全に処理したい場合は Apache Commons の NumberUtils.toInt() が便利です。それぞれの特性を理解し、状況に応じて使い分けましょう。

  1. Javaで文字列をInputStreamオブジェクトに変換する方法

    ByteArrayInputStreamクラスとは ByteArrayInputStreamは、InputStreamクラスのサブクラスであり、ストリームから読み取り可能なバイトデータを内部バッファに保持するクラスです。このクラスを利用することで、メモリ上のデータをあたかも入力ストリームであるかのように扱うことができます。 Javaで文字列(String)をInputStreamオブジェクトに変換したい場合、このByteArrayInputStreamクラスを使うのが最もシンプルな方法です。コンストラクタにはバイト配列を渡す必要があるため、StringクラスのgetBytes()メソッドを呼

  2. JavaでCLOB型を文字列(String)に変換する方法をわかりやすく解説

    CLOB(Character Large Object)は、SQLの組み込みデータ型の一つで、大量のテキストデータを格納するために使用されます。このデータ型を利用すると、最大2,147,483,647文字までのデータを保存することが可能です。 JDBC APIのjava.sql.Clobインターフェースが、このCLOBデータ型を表現します。なお、JDBCにおけるClobオブジェクトはSQLロケーター(locator)を使って実装されているため、実際のデータそのものではなく、SQL CLOBへの論理ポインターを保持している点に注意してください。 MySQLデータベースでは、TINYTEXT、T