Javaで「数値を文字列に変換して扱いたい」というときが、時々ある。
ラーパークラスを使えば、数値から文字列へ変換することができる。このページではサンプルコードも用いて、変換方法をご紹介しよう。
数値から文字列への変換
Javaで数値を扱う型は、byte,shot,int,long,float,doubleの基本型だ。値の格納や単純な演算処理は基本型でも問題なく行える。
しかし、「小数点を扱う場合に、小数点以下の桁数を知りたい」といった場合には、どうしても数値を文字列として扱う必要が出てくる。基本型には値を操作する機能(メソッド)は用意されていないので、そのままでは数値は文字列としては扱えない。
そのための手段は二つ用意されている。
- 1つはStringクラスのvalueOfメソッドを使う方法
- もう1つは数値の基本型のラッパークラスを利用してオブジェクトを生成し、用意された機能を使う方法だ
ここではラッパークラスを使った方法を説明していく。
ラッパークラスでの変換
数値を扱う基本型のラッパークラスはByte,Shot,Integer,long,Float,Doubleとなる。
Integerクラスはint型のラッパークラスだ。それ以外は最初が大文字に代わっているだけなのでわかりやすいだろう。
これらのクラスはすべてjava.langパッケージに存在している独立したクラスだがすべてNumberクラスを親にもつクラスとなっている。そのため同じ名前の同じ働きをするメソッドをもっており、数値を文字列にするtoStringメソッドも各クラスにそれぞれ存在する。
Integer型
toString()
戻り値の型 |
public static String |
内容 |
この Integer の値を表す String オブジェクトを返す。 値は、符号付きの 10 進数表現に変換され、文字列として返される。 整数値が toString(int) メソッドの引数として指定された場合と同じ結果となる。 ・オーバーライド: 親クラス の親クラスであるObjectの toStringメソッド ・戻り値: このオブジェクトの 10 進数 による文字列表現 |
toString(int i)
戻り値の型 |
public String |
内容 |
指定された整数を表す String オブジェクトを返す。 引数は、符号付き 10 進数表現に変換されてから文字列として返される。
・パラメータ: i - 変換される整数 ・戻り値: 10 進数 の引数の文字列表現
|
StringクラスのvalueOfメソッドを使う方法、ラッパークラスのtoStringメソッドを使う方法、いずれもintをStringに型変換する。
しかし、引数で渡す値にNull値(何もないことを表す特別な値)が入った場合には、StringクラスのvalueOfメソッドでは「null」という文字列が返される。ラッパークラスのtoStringメソッドではエラー(NullPointerException)が発生し、途中で処理が終了してしまう。
処理速度にはほとんど差がないと考えてよいだろう。
サンプルコード
それではサンプルコードを見てみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class JavaApp3 { public static void main(String[] args) { double d = 123.456789;//[1] Double dNum = Double.valueOf(d);//[2] String str = dNum.toString();//[3] System.out.println("dNumを文字列にした値 :" + str);//[4] int index = str.indexOf('.');//[5] System.out.println("小数点のある位置 :" + index);//[6] String str1 = str.substring(index + 1); //[7] System.out.println("小数点以下の値を取得 :" + str1); System.out.println("文字数を取得 :" + str1.length());//[8] } } |
実行結果
1 2 3 4 |
dNumを文字列にした値 :123.456789 小数点のある位置 :3 小数点以下の値を取得 :456789 文字数を取得 :6 |
サンプルコードの説明
- [1] double型の変数dを「456789」で初期化。
- [2] valueOfを使用してDouble型dNumのオブジェクトを生成し初期化。
- [3] 変数dNumを、toStringメソッドを使用して文字列に変更し、変数strへ代入。
- [4] 変数strの値を表示。
- [5] StringクラスのindexOfメソッドを使用して小数点の位置を取得し変数indexへ代入。
- [6] 変数indexの値を表示する。
- [7] substringメソッドを使用して小数点の位置以下の文字を取得し、変数str1へ代入。
- [8] str1の文字数(=小数点以下の桁数)を取得し、値を表示。
まとめ
このページではラッパークラスを用いて数値を文字列に変換する方法についてお伝えしてきた。
それほど多く利用するものでもないだろうが、特殊条件下で使いたいニーズが出てくることはあるはずだ。こういうものがあるというのは知っておこう。
ラッパークラスの詳細については下記ページを参考にしてほしい。