JavaのStringを扱う上で、文字列を整数値へ変換したり、整数値を文字列に変換するといった対応が必要なことがあります。
「Stringをintに変換したい」
「intをStringに変換したい」
「int以外の他の型へも変換できるか知りたい」
「byte型も変換できるか知りたい」
今回は、そんな悩みを解決するために、Stringの型変換の使い方をわかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
Stringからint、intからStringへ変換
JavaではStringからint、intからStringに変換するためのメソッドが用意されています。ここではそれぞれの使い方について、解説いたします。
Stringからintに変換
Stringからintに変換する場合はparseIntメソッドを使用します。
parseIntメソッドは、指定したString型の値を10進数の整数型として返します。
以下にvalueOfメソッドを使用したStringからintへ変換するサンプルを記述します。
public class Main { public static void main(String[] args) throws Exception { //String型を宣言 String str = "100"; //Stringからintへの変換 int num = Integer.parseInt(str); System.out.println("num = " + num); } }
実行結果
num = 100
サンプルではString型を宣言して整数の文字列を格納しています。
次にint型を宣言して、Integer.parseIntメソッドにてStringの値を指定しています。
parseintメソッドは整数型として返却するので、int型の変数numには100が格納されます。
文字列を数値に変換する時に注意しておきたいこととして、Stringの値は必ず数値の文字列である必要があります。
数値以外の文字列を整数値へ変換しようとすると、コンパイルエラーは発生しませんが、例外が発生してしまいます。
例えば、以下のサンプルではString型に数値以外の文字列を設定し、parseIntメソッドを使用して数値へ変換しようとしています。
String str = "apple"; int num = Integer.parseInt(str);
この例では、実行時に”Exception in thread “main” java.lang.NumberFormatException”の例外が発生します。
そのため、文字列を数値へ変換するときは、必ずStringの値が数値であるとわかっているときに使用しましょう!
intからStringに変換
intからStringに変換する場合は、valueOfメソッドを使用します。
valueOfメソッドは、指定したint型の値をString型に変換して返します。
以下にvalueOfメソッドを使用したintからStringへ変換するサンプルを記述します。
public class Main { public static void main(String[] args) throws Exception { //int型を宣言 int num = 100; //intからStringへの変換 String str = String.valueOf(num); System.out.println("str = " + str); } }
実行結果
str = 100
サンプルではint型を宣言して数値を設定し、String.valueOfメソッドで数値をString型に変換しています。
valueOfメソッドは数値をString型に変換して返却しますので、String型の変数strには、文字列の”100”が設定されています。
さまざまな変換方法
型変換は、Stringから数値型以外にも浮動小数点型、日付型などさまざまな形へ変換することが可能です。
さまざまなStringの型変換方法については、以下の記事で詳しく解説しています。
Stringからbyte、byteからStringへ変換
JavaではStringからbyteへの相互変換も可能です。Stringからbyteへ変換するメソッドも用意されていますので、ここで使い方を解説いたします。
Stringからbyteに変換
Stringからbyteへ変換する場合は、getBytesメソッドを使用します。
以下にgetBytesメソッドを使用した、Stringからbyteへ変換するサンプルを記述します。
import java.util.*; public class Main { public static void main(String[] args) throws Exception { //String型を宣言 String str = "apple"; byte[] sbyte = str.getBytes(); //byteの配列数分ループする for(int i=0; i<sbyte.length; i++) { //16進数で出力 System.out.println(Integer.toHexString(sbyte[i])); } } }
実行結果
61 70 70 6c 65
サンプルではString型を宣言して文字列を設定し、str.getBytesメソッドを使用して、String型をbyte型に変換しています。
byte型の値を出力したい場合、そのまま出力しても文字化けして表示されますので、16進数に変換して出力します。
byteからStringに変換
byteからStringに変換する場合は、Stringのコンストラクタを使用します。
Stringのコンストラクタは、byte配列を指定してStringに変換することが可能です。
以下にStringのコンストラクタを使用したbyteからStringへ変換するサンプルを記述します。
public class Main { public static void main(String[] args) throws Exception { //byte型配列を宣言 byte[] sbyte = "12345".getBytes(); //String型を宣言し、byteに変換する。 String str = new String(sbyte); System.out.println(str); } }
実行結果
12345
サンプルではbyte配列に数値を設定し、String型を宣言して、Stringコンストラクタでbyte配列を指定して、Stringの値を返しています。
Stringについてもっと詳しく知りたい方へ
Stringのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
まとめ
Stringからintへの相互変換や注意点、byte型への変換方法についても説明しました。
Stringからの型変換は、さまざまな場面で使用する機会があると思います。
もし、Stringからintへの型変換の方法を忘れてしまったら、この記事を思い出してくださいね!