Javaで文字列を数値に変換する方法について書いています。
文字列から数値に変換するには、下記のメソッドを使うことができます。
・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で文字列を数値に変換する方法について書きました。
記事の内容をまとめると、下記のようになります。
・valueOfメソッドではIntegerオブジェクトを返す。
・parseIntメソッドではプリミティブ型のintを返す。
・どちらを使っても自動変換が効くので、Integerとintで受けることができる。
コメント