スライドショー

【Java】String型をint型に変換する

こんにちは!フリーランスのオータケです。

皆さんはJavaの文字列をint型に変換する方法を覚えていますか?

また、int型の数値を文字列に変換する方法を覚えていますか?変換に失敗した場合はどうなるか知っていますか?この記事を見ればJavaの文字列をint型に変換する方法がわかりやすく学べます!

この記事では、文字列をint型に変換する方法について

  • String型からint型への変換方法
  • String型からその他の数値型への変換方法
  • 数値型からString型への変換方法
  • String型の値が数値かチェックする

など具体的な内容についても解説していきます。今回は文字列をint型に変換する方法について、使い方をわかりやすく解説します!

String型と数値型との型変換メソッド一覧

Sting型⇔数値型変換のメソッド、書き方について表にまとめました。

変換前の型変換後の型メソッド書き方例
StringintInteger.parseInt
Integer.valueOf
Integer.parseInt("1")
Integer.valueOf(“1”)
byteByte.parseByte
Byte.valueOf
Byte.parseByte(“1”)
Byte.valueOf(“1”)
shortShort.parseShort
Short.valueOf
Short.parseShort(“1”)
Short.valueOf(“1”)
longLong.parseLong
Long.valueOf
Long.parseLong(“1”)
Long.valueOf(“1”)
floatFloat.parseFloat
Float.valueOf
Float.parseFloat(“1”)
Float.valueOf(“1”)
doubleDouble.parseDouble
Double.valueOf
Double.parseDouble(“1”)
Double.valueOf(“1”)
数値型(int, byte, short, long, float, double)StringString.valueOfString.valueOf(1)
intStringInteger.toStringInteger.toString(1)
byteStringByte.toStringByte.toString((byte)1)
shortStringShort.toStringShort.toString((short)1)
longStringLong.toStringLong.toString(1l)
floatStringFloat.toStringFloat.toString(1.0f)
doubleStringDouble.toStringDouble.toString(1.0)

String型から数値型への変換はparseIntegerparaseByteparseFloatなどのメソッドやvalueOfメソッドが使用できます。数値型から文字列型への変換はvalueOfメソッドやtoStringメソッドが使用できます。

それぞれの使用例についてサンプルコードで確認していきましょう。

String型からint型への変換方法(parseInt)

文字列をint型の数値に変換するには下記のようなサンプルコードになります。

IntegerクラスのparsIntやvalueOfを使うことでint型に変換が可能です。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";
		int num = Integer.parseInt(hoge);
		System.out.println(num);
	}
}

実行結果:

1

String型からその他の数値型への変換方法

文字列から数値に変換するためにはそれぞれの目的にあったメソッドを使うことで実現することができます。

byte型への変換(parseByte)

文字列をbyte型の数値に変換するには下記のようなコードを書きます。ByteクラスのparseByteを使うことでbyte型に変換が可能です。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";
		byte result = Byte.parseByte(hoge);
		System.out.println(result);
	}
}

実行結果:

1

short型、long型への変換(parseShort、parseLong)

short型、long型の場合は下記のようになります。short型への変換の場合、ShortクラスのparseShortメソッドを使いましょう。

long型への変換はLongクラスのparseLongメソッドを使います。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";
		
		short result1 = Short.parseShort(hoge);
		System.out.println(result1);
		
		long result2 = Long.parseLong(hoge);
		System.out.println(result2);
	}
}

実行結果:

1
1

小数値(float, double)への変換(parseFloat、parseDouble)

byte型への変換やint型への変換と同様、小数点に変換する場合は下記のようにします。float型への変換はFloat.parseFloatメソッドを使いましょう。

そしてdouble型への変換はDouble.parseDoubleメソッドを使います。

public class Main {
	public static void main(String[] args) {

		String hoge = "1";

		float result1 = Float.parseFloat(hoge);
		System.out.println(result1);

		double result2 = Double.parseDouble(hoge);
		System.out.println(result2);
	}
}

実行結果:

1.0
1.0

valueOfメソッドを使う方法

今解説したそれぞれのInteger、Short、LongといったクラスにはvalueOfメソッドというものが存在しています。このメソッドを使うことで文字列を変数に変換することができます。

各型クラスのvalueOfメソッドを使った場合は戻り値はその型クラスと同じ型で返すようになっています。

public class Main {
 
    public static void main(String[] args) {
        String hoge = "1";
        
        System.out.println(Integer.valueOf(hoge));
        System.out.println(Byte.valueOf(hoge));
        System.out.println(Short.valueOf(hoge));
        System.out.println(Long.valueOf(hoge));
        System.out.println(Float.valueOf(hoge));
        System.out.println(Double.valueOf(hoge));
    }
 
}

実行結果:

1
1
1
1
1.0
1.0

このサンプルコードでは、例えば1番目にIntegerのvalueOfメソッドを呼び出しているので呼び出し後、Integerクラスに変換しています。

数値型からString型への変換方法

次に数値を文字列に変換する方法を見てみましょう。

valueOfを使う方法

valueOfというメソッドを使って文字列に変換する方法を見てみましょう。

先程の「文字列から数値への変換」でvalueOfを使うと解説しました。数値から文字列への変換でも同様にvalueOfを使うことができます。

public class Main {
	public static void main(String[] args) {

		int num = 1;

		String str = String.valueOf(num);
		System.out.println(str);
	}
}

実行結果:

1

このサンプルコードではint型の変数をString.valueOfメソッドを使って文字列に変換しています。

toStringを使う方法

IntegerクラスやFloatクラスといったクラスにはtoStringメソッドが備わっておりこのメソッドを使うことで文字列に変換することが可能です。

public class Main {
 
    public static void main(String[] args) {
        System.out.println(Integer.toString(1));
        System.out.println(Byte.toString((byte)1));
        System.out.println(Short.toString((short)1));
        System.out.println(Long.toString(1l));
        System.out.println(Float.toString(1.0f));
        System.out.println(Double.toString(1.0));
    }
 
}

実行結果:

1
1
1
1
1.0
1.0

このサンプルコードのような形でtoStringメソッドを呼ぶと文字列へ変換して返してくれます。

String型の値が数値かチェックする

もし、型変換ができなかった場合どうなるかサンプルコードを見てみましょう。

public class Main {
 
    public static void main(String[] args) {
        System.out.println(Integer.parseInt("aa"));
        System.out.println(Integer.valueOf("aa"));
    }
 
}

このサンプルコードを実行しようとすると例外やコンパイルエラーが発生して実行できなくなります。引数に渡す際には正しい数値でなければなりません。ですので、型変換を行う前にString型の値が数値かチェックするようにしましょう。

String型の値が数値かチェックする方法は2つあります。

  1. try-catch文で例外処理
  2. 正規表現でチェック


それぞれの方法について詳しく確認していきましょう。

なお、Apache Commons LangNumberUtils#isNumberメソッドを使う方法もありますが、標準ライブラリではないため説明は割愛します。

try-catch文で例外処理

try-catch文でStringの値が数値でなければ、例外処理を行うように記述します。

public class Main {
 
    public static void main(String[] args) {
        try {
            System.out.println(Integer.parseInt("-10"));
            System.out.println(Integer.valueOf("aa"));
        } catch (NumberFormatException e) {
            System.out.println(e);
        }
    }

}

実行結果:

-10
java.lang.NumberFormatException: For input string: "aa"

このサンプルコードでは、Integer.parseIntメソッドの引数の文字列は数値ですが、Integer.valueOfメソッドの引数の文字列は数値ではありません。

引数の文字列が数値でない場合は例外処理を行うようにtry-catch文で記述しています。

正規表現でチェック

正規表現のパターンを指定して、文字列が数値かどうかチェックする方法は以下のようになります。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
 
    public static void main(String[] args) {
        String str1 = "-10";
        String str2 = "aa";
        
        // 正規表現の設定
        String regex = "^-?[0-9]*$";
        Pattern p = Pattern.compile(regex);
        Matcher m1 = p.matcher(str1);
        Matcher m2 = p.matcher(str2);
        
        if(m1.find()) {
            System.out.println(Integer.parseInt(str1));
        }
        
        if(m2.find()) {
            System.out.println(Integer.valueOf(str2));
        } 
    }

}

実行結果:

-10

このサンプルコードでは、String型変数regexで正規表現のパターンをマイナス値も含む整数に指定しています。

整数の正規表現のパターンと合致する場合は、整数値に変換され出力表示されます。合致しない場合は出力表示されていません。

なお、正規表現で文字列をチェックするパターンの書き方については、こちらでくわしく説明していますので参考にしてくださいね。

【Javaで正規表現】文字列をチェックするパターンの書き方とサンプル
更新日 : 2019年4月23日

Stringの使い方の総まとめ記事はこちら

Stringのさまざまな使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!

【Java String】7つの基本的な使い方で文字列操作を理解しよう
更新日 : 2019年5月7日

まとめ

今回は文字列をint型に変換する方法について解説してきましたが、いかがでしょうか?

String型から数値型への変換はparseInteger、paraseByte、parseFloatなどのメソッドやvalueOfメソッドを使いましょう。数値から文字列はvalueOfかtoStringを使いましょう。

忘れてしまった場合、ぜひこの記事を思い出して下さい!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

オータケ

オータケ

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説