【Java】String型をint型に変換する

こんにちは!フリーランスのオータケです。

皆さんはJavaの文字列をint型に変換する方法を覚えていますか?

また、int型の数値を文字列に変換する方法を覚えていますか?変換に失敗した場合はどうなるか知っていますか?この記事を見ればJavaの文字列をint型に変換する方法がわかりやすく学べます!

この記事では、文字列をint型に変換する方法について

  • String型からint型への変換方法
  • String型からその他の数値型への変換方法
  • 数値型からString型への変換方法
  • String型の値が数値かチェックする

など具体的な内容についても解説していきます。今回は文字列をint型に変換する方法について、使い方をわかりやすく解説します!

なお、Javaの記事については、こちらにまとめています。

目次

String型と数値型との型変換メソッド一覧

Sting型⇔数値型変換のメソッド、書き方について表にまとめました。

変換前の型変換後の型メソッド書き方例
StringintInteger.parseInt
Integer.valueOf
Integer.parseInt("1")
Integer.valueOf(“1”)
byteByte.parseByte
Byte.valueOf
Byte.parseByte(“1”)
Byte.valueOf(“1”)
shortShort.parseShort
Short.valueOf
Short.parseShort(“1”)
Short.valueOf(“1”)
longLong.parseLong
Long.valueOf
Long.parseLong(“1”)
Long.valueOf(“1”)
floatFloat.parseFloat
Float.valueOf
Float.parseFloat(“1”)
Float.valueOf(“1”)
doubleDouble.parseDouble
Double.valueOf
Double.parseDouble(“1”)
Double.valueOf(“1”)
数値型(int, byte, short, long, float, double)StringString.valueOfString.valueOf(1)
intStringInteger.toStringInteger.toString(1)
byteStringByte.toStringByte.toString((byte)1)
shortStringShort.toStringShort.toString((short)1)
longStringLong.toStringLong.toString(1l)
floatStringFloat.toStringFloat.toString(1.0f)
doubleStringDouble.toStringDouble.toString(1.0)

String型から数値型への変換はparseInteger、paraseByte、parseFloatなどのメソッドやvalueOfメソッドが使用できます。数値型から文字列型への変換はvalueOfメソッドやtoStringメソッドが使用できます。

それぞれの使用例についてサンプルコードで確認していきましょう。

String型からint型への変換方法(parseInt)

文字列をint型の数値に変換するには下記のようなサンプルコードになります。

IntegerクラスのparsIntやvalueOfを使うことでint型に変換が可能です。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";
		int num = Integer.parseInt(hoge);
		System.out.println(num);
	}
}

実行結果:

1

String型からその他の数値型への変換方法

文字列から数値に変換するためにはそれぞれの目的にあったメソッドを使うことで実現することができます。

byte型への変換(parseByte)

文字列をbyte型の数値に変換するには下記のようなコードを書きます。ByteクラスのparseByteを使うことでbyte型に変換が可能です。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";
		byte result = Byte.parseByte(hoge);
		System.out.println(result);
	}
}

実行結果:

1

short型、long型への変換(parseShort、parseLong)

short型、long型の場合は下記のようになります。short型への変換の場合、ShortクラスのparseShortメソッドを使いましょう。

long型への変換はLongクラスのparseLongメソッドを使います。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";
		
		short result1 = Short.parseShort(hoge);
		System.out.println(result1);
		
		long result2 = Long.parseLong(hoge);
		System.out.println(result2);
	}
}

実行結果:

1
1

小数値(float, double)への変換(parseFloat、parseDouble)

byte型への変換やint型への変換と同様、小数点に変換する場合は下記のようにします。float型への変換はFloat.parseFloatメソッドを使いましょう。

そしてdouble型への変換はDouble.parseDoubleメソッドを使います。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";

		float result1 = Float.parseFloat(hoge);
		System.out.println(result1);

		double result2 = Double.parseDouble(hoge);
		System.out.println(result2);
	}
}

実行結果:

1.0
1.0

valueOfメソッドを使う方法

今解説したそれぞれのInteger、Short、LongといったクラスにはvalueOfメソッドというものが存在しています。このメソッドを使うことで文字列を変数に変換することができます。

各型クラスのvalueOfメソッドを使った場合は戻り値はその型クラスと同じ型で返すようになっています。

public class Main {
 
    public static void main(String[] args) {
        String hoge = "1";
        
        System.out.println(Integer.valueOf(hoge));
        System.out.println(Byte.valueOf(hoge));
        System.out.println(Short.valueOf(hoge));
        System.out.println(Long.valueOf(hoge));
        System.out.println(Float.valueOf(hoge));
        System.out.println(Double.valueOf(hoge));
    }
 
}

実行結果:

1
1
1
1
1.0
1.0

このサンプルコードでは、例えば1番目にIntegerのvalueOfメソッドを呼び出しているので呼び出し後、Integerクラスに変換しています。

数値型からString型への変換方法

次に数値を文字列に変換する方法を見てみましょう。

valueOfを使う方法

valueOfというメソッドを使って文字列に変換する方法を見てみましょう。

先程の「文字列から数値への変換」でvalueOfを使うと解説しました。数値から文字列への変換でも同様にvalueOfを使うことができます。

public class Main {
	public static void main(String[] args) {

		int num = 1;

		String str = String.valueOf(num);
		System.out.println(str);
	}
}

実行結果:

1

このサンプルコードではint型の変数をString.valueOfメソッドを使って文字列に変換しています。

toStringを使う方法

IntegerクラスやFloatクラスといったクラスにはtoStringメソッドが備わっておりこのメソッドを使うことで文字列に変換することが可能です。

public class Main {
 
    public static void main(String[] args) {
        System.out.println(Integer.toString(1));
        System.out.println(Byte.toString((byte)1));
        System.out.println(Short.toString((short)1));
        System.out.println(Long.toString(1l));
        System.out.println(Float.toString(1.0f));
        System.out.println(Double.toString(1.0));
    }
 
}

実行結果:

1
1
1
1
1.0
1.0

このサンプルコードのような形でtoStringメソッドを呼ぶと文字列へ変換して返してくれます。

String型の値が数値かチェックする

もし、型変換ができなかった場合どうなるかサンプルコードを見てみましょう。

public class Main {
 
    public static void main(String[] args) {
        System.out.println(Integer.parseInt("aa"));
        System.out.println(Integer.valueOf("aa"));
    }
 
}

このサンプルコードを実行しようとすると例外やコンパイルエラーが発生して実行できなくなります。引数に渡す際には正しい数値でなければなりません。ですので、型変換を行う前にString型の値が数値かチェックするようにしましょう。

String型の値が数値かチェックする方法は2つあります。

  1. try-catch文で例外処理
  2. 正規表現でチェック


それぞれの方法について詳しく確認していきましょう。

なお、Apache Commons LangNumberUtils#isNumberメソッドを使う方法もありますが、標準ライブラリではないため説明は割愛します。

try-catch文で例外処理

try-catch文でStringの値が数値でなければ、例外処理を行うように記述します。

public class Main {
 
    public static void main(String[] args) {
        try {
            System.out.println(Integer.parseInt("-10"));
            System.out.println(Integer.valueOf("aa"));
        } catch (NumberFormatException e) {
            System.out.println(e);
        }
    }

}

実行結果:

-10
java.lang.NumberFormatException: For input string: "aa"

このサンプルコードでは、Integer.parseIntメソッドの引数の文字列は数値ですが、Integer.valueOfメソッドの引数の文字列は数値ではありません。

引数の文字列が数値でない場合は例外処理を行うようにtry-catch文で記述しています。

正規表現でチェック

正規表現のパターンを指定して、文字列が数値かどうかチェックする方法は以下のようになります。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
 
    public static void main(String[] args) {
        String str1 = "-10";
        String str2 = "aa";
        
        // 正規表現の設定
        String regex = "^-?[0-9]*$";
        Pattern p = Pattern.compile(regex);
        Matcher m1 = p.matcher(str1);
        Matcher m2 = p.matcher(str2);
        
        if(m1.find()) {
            System.out.println(Integer.parseInt(str1));
        }
        
        if(m2.find()) {
            System.out.println(Integer.valueOf(str2));
        } 
    }

}

実行結果:

-10

このサンプルコードでは、String型変数regexで正規表現のパターンをマイナス値も含む整数に指定しています。

整数の正規表現のパターンと合致する場合は、整数値に変換され出力表示されます。合致しない場合は出力表示されていません。

なお、正規表現で文字列をチェックするパターンの書き方については、こちらでくわしく説明していますので参考にしてくださいね。

Stringの使い方の総まとめ記事はこちら

Stringのさまざまな使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!

まとめ

今回は文字列をint型に変換する方法について解説してきましたが、いかがでしょうか?

String型から数値型への変換はparseInteger、paraseByte、parseFloatなどのメソッドやvalueOfメソッドを使いましょう。数値から文字列はvalueOfかtoStringを使いましょう。

忘れてしまった場合、ぜひこの記事を思い出して下さい!

この記事を書いた人

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

目次