- Home ›
- Java入門 ›
- 文字列(Stringクラス)
文字列を数値に変換する
数値の形式で記述された文字列を int 型や double 型などの基本データ型へ変換する方法について解説します。基本データ型のラッパークラスで用意されている parseInt などのメソッドを使用する方法、同じくラッパークラスで用意されている valueOf メソッドを使用する方法、同じくラッパークラスのコンストラクタを使用する方法、についてそれぞれご紹介します。
※ 数値を文字列に変換する方法については「数値を文字列に変換する」を参照されてください。
(Last modified: )
ラッパークラスのparseIntメソッドを使用する
文字列を数値に変換する 1 つ目の方法は各ラッパークラスで用意されている parseInt メソッドや parseDouble メソッドを使って対応する基本データ型の値に変換する方法です。
例えば int 型のラッパークラスである Integer クラスでは文字列を数値に変換するメソッドとして parseInt メソッドが用意されています。 parseInt メソッドはクラスメソッドで、次のように定義されています。
public static int parseInt(String s) throws NumberFormatException
パラメータ: s - 解析対象のint表現を含むString 戻り値: 10進数の引数で表される整数値 例外: NumberFormatException - 文字列が解析可能な整数型を含まない場合。
引数に指定した文字列を int 型の値に変換し戻り値として返します。文字列は 10 進数の整数の形式でなければなりません。数値に解析できない文字が含まれていた場合には NumberFormatException 例外が発生します。
次のサンプルを見てください。
String str = "24"; int num = Integer.parseInt(str);
文字列の値を Integer クラスの parseInt? メソッドを使って int 型の値に変換しています。
※ ラッパークラスについては「ラッパークラスの利用」を参照されてください。
なお他のラッパークラスではそれぞれ同じ目的で使用されるメソッドとして次のものが用意されています。各メソッドの引数として文字列を指定すると、各ラッパークラスの対応する基本データ型の値に変換されます。
Byteクラス: public static byte parseByte(String s) throws NumberFormatException Shortクラス: public static short parseShort(String s) throws NumberFormatException Longクラス: public static long parseLong(String s) throws NumberFormatException Floatクラス: public static float parseFloat(String s) throws NumberFormatException Doubleクラス: public static double parseDouble(String s) throws NumberFormatException Booleanクラス: public static boolean parseBoolean(String s)
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample12-1.java という名前で保存します。
class JSample12_1{ public static void main(String[] args){ String si = "42"; String sd = "2.84"; String sb = "false"; int i = Integer.parseInt(si); double d = Double.parseDouble(sd); boolean b = Boolean.parseBoolean(sb); System.out.println(i); System.out.println(d); System.out.println(b); } }
コンパイルを行います。
javac -encoding UTF-8 JSample12_1.java
その後で、次のように実行してください。
java JSample12_1
int 型、 double 型、 boolean 型の形式で記述された文字列を、それぞれラッパークラスの parseInt などのメソッドを使用して基本データ型の値に変換しました。
ラッパークラスのvalueOfメソッドを使用する
文字列を数値に変換する 2 つ目の方法は各ラッパークラスで用意されている valueOf メソッドを使って基本データ型に変換する方法です。
例えば int 型のラッパークラスである Integer クラスでは文字列から Integer クラスのインスタンスを作成するメソッドとして valueOf メソッドが用意されています。 valueOf メソッドはクラスメソッドで、次のように定義されています。
public static Integer valueOf(String s) throws NumberFormatException
パラメータ: s - 解析される文字列 戻り値: 文字列引数により表される値を保持するIntegerオブジェクト 例外: NumberFormatException - 文字列が解析可能な整数型を含まない場合。
引数に指定した文字列を int 型の値に変換し、その値を持つ Integer クラスのインスタンスとして返します。文字列は 10 進数の整数の形式でなければなりません。数値に解析できない文字が含まれていた場合には NumberFormatException 例外が発生します。
Integer クラスのインスタンスが持っている int 型の値を取り出すには、 Integer クラスで用意されている intValue メソッドを使います。
public int intValue()
戻り値: このオブジェクトが表す数値をint型に変換した値。
戻り値として Integer クラスのインスタンスを持っている値を int 型の値として返します。
次のサンプルを見てください。
String str = "24"; Integer i = Integer.valueOf(str); int num = i.intValue();
文字列の値を Integer クラスの valueOf? メソッドを使って Integer クラスのインスタンスを作成したあと、 Integer クラスの intValue メソッドを使って int 型の値として取得しています。
なお他のラッパークラスではそれぞれ同じ目的で使用されるメソッドとして次のものが用意されています。各メソッドの引数として文字列を指定すると、各ラッパークラスのインスタンスを作成しますので、インスタンスから対応する基本データ型の値をメソッドを使って取得してください。
Byteクラス: public static Byte valueOf(String s) throws NumberFormatException public byte byteValue() Shortクラス: public static Short valueOf(String s) throws NumberFormatException public short shortValue() Longクラス: public static Long valueOf(String s) throws NumberFormatException public long longValue() Floatクラス: public static Float valueOf(String s) throws NumberFormatException public float floatValue() Doubleクラス: public static Double valueOf(String s) throws NumberFormatException public double doubleValue() Booleanクラス: public static Boolean valueOf(String s) public boolean booleanValue()
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample12-2.java という名前で保存します。
class JSample12_2{ public static void main(String[] args){ String si = "42"; String sd = "2.84"; String sb = "false"; int i = Integer.valueOf(si).intValue(); double d = Double.valueOf(sd).doubleValue(); boolean b = Boolean.valueOf(sb).booleanValue(); System.out.println(i); System.out.println(d); System.out.println(b); } }
コンパイルを行います。
javac -encoding UTF-8 JSample12_2.java
その後で、次のように実行してください。
java JSample12_2
int 型、 double 型、 boolean 型の形式で記述された文字列を、それぞれラッパークラスの valueOf? などのメソッドを使用してラッパークラスのインスタンスにしたあとで、インスタンスが持つ値を基本データ型の値として取得しました。
ラッパークラスのコンストラクタを使用する
文字列を数値に変換する 3 つ目の方法は各ラッパークラスで用意されているコンストラクタを使用する方法です。ただコンストラクタを使用する方法は現在非推奨となっているので、簡単に方法だけご紹介しておきます。
例えば Integer クラスでは引数に文字列を取るコンストラクタが用意されています。
public Integer(String s) throws NumberFormatException
パラメータ: s - Integerに変換するString 例外: NumberFormatException - Stringが解析可能な整数を含まない場合。
引数に指定した文字列を int 型の値に変換し、その値を持つ Integer クラスのインスタンスとして返します。文字列は 10 進数の整数の形式でなければなりません。数値に解析できない文字が含まれていた場合には NumberFormatException 例外が発生します。
ラッパークラスのインスタンスを作成したあとは、ラッパークラスの valueOf? メソッドを使ってインスタンスを作成した場合と同じです。次のサンプルをみてください。
String str = "24"; Integer i = new Integer(str); int num = i.intValue();
new 演算子を使って Integer クラスのインスタンスを作成したあと、 Integer クラスの intValue メソッドを使ってインスタンスが持つ値を int 型の値として取得しています。
ラッパークラスのインスタンスを作成する方法で文字列を数値に変換する場合は、ラッパークラスの valueOf? メソッドで行う方法を使ってください。
-- --
Java で 数値の形式で記述された文字列を int 型や double 型などの基本データ型へ変換する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。