検索

キーワード


【Java】文字列からデータ型・データ型から文字列への変換方法

  • 公開日:2020-08-03 12:14:23
  • 最終更新日:2021-01-22 17:37:36
【Java】文字列からデータ型・データ型から文字列への変換方法

こんにちは、駆け出しプログラマーの若江です!

ここでは初学者として学習を終えた私が、アウトプットの意味も込めて文字列とデータ型間の変換についてご紹介させていただきます。

できる限り初学者が理解しやすい内容として紹介させていただくので、参考となれば幸いです!


関連記事リンク:Stringについて紹介 / 拡張for文の紹介

文字列とデータ型間の変換方法

String型(文字列)からデータ型への変換、またはデータ型から String型への変換は

メソッドの引数やデータ比較、データベースへの登録などにおいて、

お互いの整合性を合わせる場合などに必要となります。

ここでは「String型」「データ型」の変換方法を紹介させていただきます。


String型とデータ型の変換 概要

様々なデータ型が Java には存在しますが、多くの変換方法には大きく似ている部分があります。

覚えやすくするために、ここではいくつかの型をひとつの分類でまとめて5種類に分けて紹介します。

分類①:文字列と整数値の変換 (int, short, long)

分類②:文字列と小数点を持つ値の変換 (float, double)

分類③:文字列と真偽値 true / false の変換 (boolean)

分類④:文字列と文字単体の変換 (char)

分類⑤:文字列と Byte の変換 (byte)


変換方法紹介の前に、「プリミティブ型をラップしたクラス型」について簡単に説明しておきます。

プリミティブ型とは、int, short, long, float, double, boolean や char 型などの総称を指します。

ラップしたクラス型とは、上記のような「型」に加工処理機能(メソッドなど)を持たせるためにクラス化させた型を指します。

クラス化のルールに従って型の先頭文字は大文字で表記されます。また本来の名前で表記されます(int = Integer など)。



分類①:文字列と整数値(int ,short, long)の変換

文字列と整数値の変換はお互いが整数値であることを条件とします。

整数値以外、もしくはその型が保持できる値の上限を超えている場合は、

実行時に NumberFormatException という例外を投げます。

例外が投げられると、それ以降の処理は中止されるため気を付けましょう。


変換で使うメソッド

文字列と整数値の変換には3種類のメソッドが用意されています。

・  valueOf :文字列からデータ型、データ型から文字列の両方で使うことができます。

  型 変数名 = クラスの型.valueOf(値);

 parse○○:文字列からデータ型へ変換する際に使います。○○にはデータ型の名前が入ります。

  プリミティブ型 変数 = クラスの型.parse○○(値);

 toString  :データ型から文字列へ変換する際に使います。

  String 変数名 = クラスの型.toString(値);


上記書き方を参考にサンプルコードを確認しましょう。

◆ valueOf のサンプルコード

【String ➡ 整数値】

// 文字列 100 を String の変数に代入
String str = "100";

// 文字列 100 を整数値の 100 に変換
Integer i = Integer.valueOf(str); // Integer は int とも記述可能です。(オートボクシング機能)
Short s = Short.valueOf(str); // Short は short とも記述可能です。(オートボクシング機能)
Long l = Long.valueOf(str); // Long は long とも記述可能です。(オートボクシング機能)

// 整数値 100 を表示
System.out.println("String から valueOf で Integre へ変換: " + i);
System.out.println("String から valueOf で Short へ変換: " + s);
System.out.println("String から valueOf で Long へ変換: " + l);


【整数値  String】

// データ型の変数に整数値 100 を代入
int i = 100;
short s = 100;
long l = 100;

// 整数値 100 を文字列の 100 へ変換
String str = String.valueOf(i);
String str1 = String.valueOf(s);
String str2 = String.valueOf(l);

// 文字列 100 を表示
System.out.println("int から valueOf で String へ変換 :" + str);
System.out.println("short から valueOf で String へ変換:" + str1);
System.out.println("long から valueOf で String へ変換:" + str2);


◆ parse○○ のサンプルコード

// 文字列の 100 を String に代入
String str = "100";

// 文字列の 100 を整数の 100 に変換
int i = Integer.parseInt(str);
short s = Short.parseShort(str);
long l = Long.parseLong(str);

// 整数値に変換した 100 を表示
System.out.println("String から perseInt で int へ変換: " + i);
System.out.println("String から perseShort で short へ変換: " + s);
System.out.println("String から perseLong で long へ変換: " + l);


◆ toString のサンプルコード

// 整数値 100 をデータ型の変数に代入
int i = 100;
short s = 100;
long l = 100;

// 整数値 100 を文字列へ変換
String str = Integer.toString(i);
String str1 = Short.toString(s);
String str2 = Long.toString(l);

// 文字列 100 を表示
System.out.println("int から toString で String へ変換 :" + str);
System.out.println("short から toString で toString へ変換:" + str1);
System.out.println("long から toString で toString へ変換:" + str2);



分類②:文字列と小数点を持つ値(float, double)の変換

小数点を持つ値の他、整数値も渡すことができます。(整数値を使用しても結果は小数点を含んで返ってきます)

値に文字を渡した場合は NumberFormatException という例外が投げらるので注意しましょう。

使うメソッドは分類①と同じ3種類のメソッドです。


分類①とは小数点を扱う点で違うためサンプルコードを確認しておきましょう。

※valueOf のサンプルコードは省略します。

◆ parse○○ のサンプルコード

// 文字列の変数に 0.1 を代入
String str = "0.1";

// 文字列からデータ型へ変換
float f = Float.parseFloat(str);
double d = Double.parseDouble(str);

// 0.10 を表示
System.out.println("String から parseFloat で数値へ変換" + f);
System.out.println("String から parseDouble で数値へ変換" + d);


◆ toString のサンプルコード

// データ型に合わせた小数点の数 0.1 を変数へ代入
float f = 0.1f;
double d = 0.1;

// 0.1 を文字列へ変換
String str = Float.toString(f);
String str2 = Double.toString(d);

// 文字列 0.1 を表示
System.out.println("float から toString で String へ変換" + str);
System.out.println("double から toString で String へ変換" + str2);

※ 0.1 は double型のため、サイズが大きすぎてfloat では扱いきれませんので、明示的に 0.1f として float に合わせています。


ちなみに float, double から String へ変換する際に、小数点が深いと指数表記で結果を返すことがあります。

指数表記とは「1.0E-4」などのような結果が表示されます。

上記から期待していた小数点の表記へ正したい場合は、BigDecimal というクラスで解決が望めます。

以下参考として確認しておきましょう。

double d = 0.0001;

// 指数表記で表示される
String str = Double.toString(d);
System.out.println("指数表記で表示される: " + str);

// valueOf に 0.0001 を渡す。BigDecimal を使うと小数点で表示される
String str2 = BigDecimal.valueOf(d).toString();
System.out.println("省略されずに表示される: " + str2);



分類③:文字列と真偽値(boolean)の変換

文字列から boolean への変換では、文字列が true (大文字、小文字の区別なし) の場合に true の変換を返し、

それ以外は false の変換を返します。

boolean から文字列への変換は、そのまま文字列へ変換処理されます。


使うメソッドは分類①②と同じです。

数字の型とは少し違た動きをしますので、サンプルコードで確認しておきましょう。

※ valueOf のサンプルコードは省略します。

◆ parseBoolean のサンプルコード

String str1 = "true";
String str2 = "test";

boolean b1 = Boolean.parseBoolean(str1); // true を true と判定
boolean b2 = Boolean.parseBoolean(str2); // test を false と判定


System.out.println("true を perseBoolean で boolean へ変換: " + b1); // true を表示
System.out.println("false を perseBoolean で boolean へ変換: " + b2); // false を表示


◆ toString のサンプルコード

boolean b1 = true;
boolean b2 = false;

String str1 = Boolean.toString(b1); // true を文字列へ変換
String str2 = Boolean.toString(b2); // false を文字列へ変換

System.out.println("true を toString で String へ変換: " + str1); // 文字列 true を表示
System.out.println("false を toString で String へ変換: " + str2); // 文字列 false を表示



分類④:文字列と文字単体(char)の変換

char型を配列にしたものが String型となります。

そのため String を1文字単位で扱ったり、char を配列にするといった処理を行います。

char のメソッドは分類①②③と少し異なり、ここでは toString の他に以下メソッドを紹介します。

toCharArray :Stringの文字列を1文字ごとの配列に切り分けます。


サンプルコードを確認しましょう。

◆ toString のサンプルコード

char c = 'a';

String str = Character.toString(c); // 文字単体を文字列へ変換
System.out.println("char から toString で String へ変換: " + str); // a を表示


◆文字単体の配列から文字列へ変換

// a, r, r, a, y を持った文字の配列
char[] c = new char[]{'a', 'r', 'r', 'a', 'y'};

// char の文字配列を引数にして String を新しく生成
String str = new String(c);
System.out.println("char を配列にして String へ変換: " + str); // 文字列の array を表示


◆文字列から文字の配列へ変換

String str = "array";

// 文字列を char の配列へ変換
char[] c = str.toCharArray();

System.out.println(c); // 文字の配列として array を表示

ちなみに上記 c は文字の配列となっているため、for文で取り出すことも可能です。

上記サンプルコードに以下を足すことで 「a」「r」「r」「a」「y」を取り出せます。

for(char c2 : c) {
	System.out.println(c2);
}

 


分類⑤:文字列と Byte (byte)の変換

文字列の文字を10進数の byte へ変換、または byte から文字列へ変換ができます。

文字列から byte への変換には getByteメソッドを使います。


◆ getByte のサンプルコード

String str = "Word";

byte[] b = str.getBytes(); // W o r d をそれぞれ byte に変換して byte の配列へ代入

// 「Arrays.toString」で配列の中身を文字列として表示
System.out.println(Arrays.toString(b)); // 結果:87, 111, 114, 100 を表示

// 配列のため拡張for文で byte を1つずつ取り出しも可能
for(byte b2 : b) {
	System.out.println(b2);
}


◆ byte を文字列へ変換

// 先ほど String から byte へ変換した結果を利用
byte[] b = {87, 111, 114, 100};

// byte の配列を使って String を生成
String str = new String(b);
System.out.println(str); // 結果:Word を表示



まとめ

文字列とデータ型の変換には valueOf, parse, toString を基本として、

toCharArray, getByte といったメソッドを使うことができます。

それぞれの機能を理解して必要になったときに使えるようにしておきましょう。


関連記事リンク

Stringについて紹介 / 拡張for文の紹介


【著者】

若江

30代で異業種となるIT業界へ転職した駆け出しのプログラマです。これまで主に Java や Ruby、HTML/CSS を使って学習を目的としたショップサイトや掲示板サイトの作成を行いました。プログラマとしての経験が浅いからこそ、未経験者の目線に近い形で基礎の紹介をしていきたいと思います。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様