Java で String を int に変換するコード例の詳細解説
Java で String を int に変換する方法
Java では、文字列 (String) を整数 (int) に変換する方法は主に2つあります。
- Integer.parseInt(String s): 文字列を直接整数に変換します。
- Integer.valueOf(String s): 文字列を Integer オブジェクトに変換し、その後、自動的に int にアンボックスされます。
詳細説明
Integer.parseInt(String s)
- 説明: 文字列をパースして整数に変換します。
- 戻り値: int 型の整数値。
- 例外: 文字列が整数として解釈できない場合、NumberFormatException が発生します。
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num); // 出力: 123
- 説明: 文字列を Integer オブジェクトに変換します。
- 戻り値: Integer オブジェクト。
String str = "456";
Integer numObj = Integer.valueOf(str);
int num = numObj; // 自動アンボックス
System.out.println(num); // 出力: 456
注意点
- 文字列が整数として解釈できない場合、NumberFormatException が発生するため、例外処理を考慮する必要があります。
- Integer.parseInt() は直接 int 値を取得できるため、一般的に使用されます。
- Integer.valueOf() は Integer オブジェクトが必要な場合や、オートボクシング/アンボクシングの動作を確認したい場合に使用されます。
例外処理
try {
String str = "abc";
int num = Integer.parseInt(str);
} catch (NumberFormatException e) {
System.out.println("文字列を整数に変換できませんでした");
}
Java で String を int に変換する際には、Integer.parseInt() が一般的であり、例外処理を適切に行うことが重要です。
Integer.parseInt() を使った変換
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num); // 出力: 123
- String str = "123";: "123" という文字列を str 変数に代入します。
- int num = Integer.parseInt(str);:
Integer.parseInt()
メソッドは、引数として渡された文字列を整数に変換します。- 変換された整数を num 変数に代入します。
- System.out.println(num);: 変数 num の値 (整数 123) をコンソールに出力します。
Integer.valueOf() を使った変換 (自動アンボクシング)
String str = "456";
Integer numObj = Integer.valueOf(str);
int num = numObj; // 自動アンボクシング
System.out.println(num); // 出力: 456
- Integer numObj = Integer.valueOf(str);:
Integer.valueOf()
メソッドは、引数として渡された文字列を Integer オブジェクトに変換します。- 変換された Integer オブジェクトを numObj 変数に代入します。
- int num = numObj;:
例外処理の追加
try {
String str = "abc";
int num = Integer.parseInt(str);
} catch (NumberFormatException e) {
System.out.println("文字列を整数に変換できませんでした");
}
- try-catch ブロック:
- NumberFormatException: 文字列が数値に変換できない場合に発生する例外です。
- catch ブロック: 例外が発生した場合、エラーメッセージを出力します。
- Integer.parseInt(): 文字列を直接 int に変換する。
- 例外処理: 変換に失敗した場合に適切な処理を行うために必要。
どちらの方法を使うべきか?
- 一般的には Integer.parseInt() がシンプルで使いやすいです。
- 変換する文字列に小数点以下が含まれている場合、NumberFormatException が発生します。小数を扱う場合は、Double.parseDouble() などを使用します。
- 16進数や2進数などの異なる基数の数値を扱う場合は、Integer.parseInt() の第2引数に基数を指定します。
例: 16進数 "FF" を10進数に変換
String hexString = "FF";
int decimal = Integer.parseInt(hexString, 16);
System.out.println(decimal); // 出力: 255
さらに詳しく知りたい場合は、以下のキーワードで検索してみてください。
- Java String to int
- Integer.parseInt
- Integer.valueOf
- NumberFormatException
- オートボクシング
- アンボクシング
数値解析ライブラリを使用する
- Apache Commons NumberUtils:
NumberUtils.toInt(String str, int defaultValue)
: 文字列を整数に変換し、変換に失敗した場合にデフォルト値を返します。- さまざまな基数での変換や、null 値の処理など、柔軟な機能を提供します。
import org.apache.commons.lang3.math.NumberUtils;
String str = "123a";
int num = NumberUtils.toInt(str, -1); // 変換に失敗した場合、-1 を返す
System.out.println(num); // 出力: 123
正規表現を使って数値部分を抽出する
- Pattern と Matcher クラス:
- 文字列から数値部分だけを抽出します。
- より複雑な文字列処理が必要な場合に有効です。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String str = "数値は123です";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
int num = Integer.parseInt(matcher.g roup());
System.out.println(num); // 出力: 123
}
StringBuilder を使って数値部分だけを構築する
- StringBuilder:
- 文字列の操作に特化したクラスです。
- 数値部分だけを新しい文字列に構築し、最後に Integer.parseInt() で変換します。
String str = "数値は123です";
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isDigit(c)) {
sb.append(c);
}
}
int num = Integer.parseInt(sb.toString());
System.out.println(num); // 出力: 123
数値フォーマットライブラリを使用する
- DecimalFormat:
- 数値のフォーマットを柔軟に設定できます。
- parse() メソッドで文字列を数値に変換できます。
import java.text.NumberFormat;
import java.text.ParseException;
String str = "1,234";
NumberFormat format = NumberFormat.getInstance();
try {
Number number = format.parse(str);
int num = number.intValue();
System.out.println(num); // 出力: 1234
} catch (ParseException e) {
e.printStackTrace();
}
どの方法を選ぶべきか?
- シンプルで一般的なケース: Integer.parseInt()
- エラー処理やデフォルト値: Apache Commons NumberUtils
- 複雑な文字列処理: 正規表現や StringBuilder
- 数値フォーマット: DecimalFormat
選択のポイント
- 処理の安定性: 例外処理を適切に行う
- パフォーマンス: 処理速度を考慮する
- 可読性: コードの分かりやすさを重視する
注意:
- 上記の方法は、あくまで例です。実際の開発では、プロジェクトの要件やコードの規模に合わせて適切な方法を選択してください。
- 各方法には、メリットとデメリットがあります。事前に十分に検討しましょう。
java string type-conversion