【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() が便利です。それぞれの特性を理解し、状況に応じて使い分けましょう。
-
Javaで文字列をInputStreamオブジェクトに変換する方法
ByteArrayInputStreamクラスとは ByteArrayInputStreamは、InputStreamクラスのサブクラスであり、ストリームから読み取り可能なバイトデータを内部バッファに保持するクラスです。このクラスを利用することで、メモリ上のデータをあたかも入力ストリームであるかのように扱うことができます。 Javaで文字列(String)をInputStreamオブジェクトに変換したい場合、このByteArrayInputStreamクラスを使うのが最もシンプルな方法です。コンストラクタにはバイト配列を渡す必要があるため、StringクラスのgetBytes()メソッドを呼
-
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