文字列を数値に変換する

数値の形式で記述された文字列を 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

ラッパークラスのparseIntメソッドを使用する(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

ラッパークラスのvalueOfメソッドを使用する(1)

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 )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。