Javaで文字列を数値に変換する2つの方法!

Java Java

Javaで文字列を数値に変換する方法について書いています。
文字列から数値に変換するには、下記のメソッドを使うことができます。

・Integer.valueOfメソッド
・Integer.parseIntメソッド

載せているコードについては、OpenJDKのバージョン19で動作を確認しました。

valueOfメソッドを使う

IntegerクラスのvalueOfメソッドを使うことで、文字列から数値に変換することができます。
例えば、下記のように使います。

Integer number = Integer.valueOf("100");
System.out.println(number); // 100

IntegerクラスのvalueOfメソッドに文字列の「100」を渡しています。
数値に変換されて、ラッパークラスのIntegerオブジェクトが返ってきます。

数値に変換できました。
自動変換(アンボクシング)してくれるため、下記のようにプリミティブ型として受け取ることも可能です。

int number = Integer.valueOf("100");
System.out.println(number); // 100

変換できないときは例外が発生する

変換できない文字列を渡したときにはNumberFormatExceptionが発生します。
例えば、下記のように変換不可能な文字列を渡したときです。

Integer number = Integer.valueOf("aaa");

このときには実行すると、下記のようにエラーが発生します。
Exception in thread "main" java.lang.NumberFormatException: For input string: "aaa"

エラーで止まることを回避したいときには、try catchで例外処理を書いておくと良いです。
例外が発生したときには、catchの配下の処理を通るようになります。

try {
    Integer number = Integer.valueOf("aaa");
} catch(NumberFormatException e) { 
    System.out.println("例外発生時の処理");
}

parseIntメソッドを使う

IntegerクラスのparseIntメソッドを使うことでも、文字列から数値に変換することができます。
例えば、下記のように使います。

int number = Integer.parseInt("110");
System.out.println(number); // 110

IntegerクラスのparseIntメソッドに文字列の「110」を渡しています。
数値に変換されて、プリミティブ型のintが返ってきます。

こちらも自動変換(ボクシング)が効くので、下記のようにIntegerオブジェクトとして受け取ることも可能です。

Integer number = Integer.parseInt("110");
System.out.println(number); // 110

変換できないときは例外が発生する

こちらも変換できない文字列を渡したときにはNumberFormatExceptionが発生します。
例えば、下記のように変換不可能な文字列を渡したときです。

int number = Integer.parseInt("bbb");

実行すると、下記のようにエラーが発生します。
Exception in thread "main" java.lang.NumberFormatException: For input string: "bbb"

こちらもエラーで止まることを回避したいときには、同じようにtry catchで例外処理を書いておくと良いです。
例外が発生したときには、catchの配下の処理を通るようになります。

try {
    int number = Integer.parseInt("bbb");
} catch(NumberFormatException e) { 
    System.out.println("例外発生時の処理");
}

valueOfメソッドとparseIntメソッドの違い

valueOfメソッドとparseIntメソッドの違いですが、上記で書いたように返ってくる数値が違います。
例えば、valueOfメソッドはIntegerオブジェクトを返すので、instanceofで型を確認することができます。

System.out.println((Integer.valueOf("100") instanceof Integer)); // true

parseIntメソッドでは、プリミティブのintが返ってくるためinstanceofを使うとエラーになります。

System.out.println(Integer.parseInt("100") instanceof Integer); // エラー

このように返ってきている値が違うことが確認できました。

Javaで文字列を数値に変換する方法まとめ

今回はJavaで文字列を数値に変換する方法について書きました。
記事の内容をまとめると、下記のようになります。

・IntegerクラスのvalueOfメソッドとparseIntメソッドで、文字列から数値に変換することができた。
・valueOfメソッドではIntegerオブジェクトを返す。
・parseIntメソッドではプリミティブ型のintを返す。
・どちらを使っても自動変換が効くので、Integerとintで受けることができる。

コメント

タイトルとURLをコピーしました