String.valueOf()とは何か
Javaで業務システムを開発していると、数値や真偽値、オブジェクトなどを文字列へ変換したい場面が頻繁に登場します。
例えば、
- ログ出力
- CSV出力
- 画面表示
- デバッグ
- JSON生成
- SQLパラメータの組み立て
などです。
そのような場面で非常によく利用される標準メソッドが
String.valueOf()
です。
String.valueOf(値)Javaこのメソッドは様々な型の値を文字列(String)へ変換します。
実務ではほぼ毎日のように見かける基本中の基本ユーティリティです。
また、nullにも安全に対応できるため、堅牢なコードを書く上で非常に重要な知識になります。
なぜ文字列変換が必要なのか
Javaでは文字列以外のデータ型が多数存在します。
// 数値
int age = 30;
// 小数
double price = 1980.5;
// 真偽値
boolean active = true;
Javaこれらをログや画面へ表示する際には文字列として扱う必要があります。
そのため文字列変換が必要になるのです。
String.valueOf()の基本構文
最もシンプルな例を見てみましょう。
// 数値
int age = 30;
// 文字列へ変換
String text =
String.valueOf(age);
// 表示
System.out.println(text);
Java実行結果
30
数値の30が文字列の”30″へ変換されています。
ステップバイステップで理解する
ステップ1:変換対象を用意する
// 年齢
int age = 25;
Java現在は整数型です。
ステップ2:String.valueOf()を実行する
// 文字列へ変換
String ageText =
String.valueOf(age);
Javaステップ3:型を確認する
// 出力
System.out.println(ageText);
Java実行結果
25
見た目は同じですが、内部ではString型になっています。
様々な型を変換できる
int型
// int型
int value = 100;
// Stringへ変換
String text =
String.valueOf(value);
System.out.println(text);
Java実行結果
100
double型
// 小数
double price = 2980.5;
// Stringへ変換
String text =
String.valueOf(price);
System.out.println(text);
Java実行結果
2980.5
boolean型
// 真偽値
boolean active = true;
// Stringへ変換
String text =
String.valueOf(active);
System.out.println(text);
Java実行結果
true
char型
// 文字
char grade = 'A';
// Stringへ変換
String text =
String.valueOf(grade);
System.out.println(text);
Java実行結果
A
オブジェクトも変換できる
String.valueOf()はオブジェクトにも対応しています。
// Stringオブジェクト
String name = "Tanaka";
// 文字列化
String result =
String.valueOf(name);
System.out.println(result);
Java実行結果
Tanaka
オブジェクトの場合は内部でtoString()が呼び出されます。
非常に重要:null安全である
初心者が知っておくべき最重要ポイントのひとつです。
通常のtoString()呼び出しは危険です。
// null
String name = null;
// 危険
String result =
name.toString();
Java実行結果
NullPointerException
しかしString.valueOf()なら安全です。
// null
String name = null;
// 安全
String result =
String.valueOf(name);
System.out.println(result);
Java実行結果
null
例外は発生しません。
文字列の”null”が返されます。
内部でどのように動いているのか
String.valueOf(Object)の動作はイメージとして次のようになります。
// イメージ
if (obj == null) {
return "null";
}
return obj.toString();
Javaそのため通常のtoString()より安全に利用できます。
なぜ実務で頻繁に使われるのか
業務システムでは入力値や取得データがnullになることが珍しくありません。
- DB検索結果なし
- 未入力項目
- API応答欠損
- 設定値未定義
- 削除済みデータ
そのため、安全に文字列化できるString.valueOf()がよく利用されます。
ログ出力での活用例
// 顧客ID取得
String customerId =
getCustomerId();
// null安全ログ出力
System.out.println(
String.valueOf(customerId)
);
Javaログ出力でNullPointerExceptionが発生することを防げます。
CSV出力での活用例
// 年齢
Integer age = getAge();
// CSV出力
writer.write(
String.valueOf(age)
);
Java値が取得できなかった場合でも安全に処理できます。
画面表示データ作成での活用例
// ポイント
Integer point =
customer.getPoint();
// 表示用
String displayPoint =
String.valueOf(point);
Java業務画面では頻出する使い方です。
文字列連結との関係
実はJavaの文字列連結でも内部的にString.valueOf()が利用されることがあります。
// 数値
int age = 30;
// 連結
String text =
"年齢:" + age;
JavaこのようなコードではJavaコンパイラが内部的に文字列変換を行います。
そのためString.valueOf()はJavaの基盤的な仕組みの一部ともいえます。
Objects.toString()との違い
初心者がよく混同するポイントです。
String.valueOf()
String.valueOf(obj)
Javanullなら文字列”null”を返します。
Objects.toString()
Objects.toString(obj)
Javaこちらも基本的に文字列”null”を返します。
動作はかなり似ています。
ただしObjects.toString()にはデフォルト値指定版があります。
Objects.toString(
obj,
"未設定"
)
Javaこの機能が必要な場合はObjects.toString()の方が便利です。
初心者が間違えやすいポイント
String.valueOf(null)はnullではない
非常によくある誤解です。
// 実行
String result =
String.valueOf(null);
Java返されるのは、
"null"
です。
本物のnullではありません。
数値型にはならない
変換後は完全にString型になります。
// 数値
int age = 30;
// String化
String text =
String.valueOf(age);
Javaそのため数値計算はできません。
// NG
text + 10;
Java結果は、
3010
になります。
実務で使えるテンプレート集
数値変換テンプレート
// int → String
String text =
String.valueOf(number);
Javanull安全テンプレート
// 例外にならない
String text =
String.valueOf(obj);
Javaログ出力テンプレート
// ログ出力
log.info(
String.valueOf(userId)
);
JavaCSV出力テンプレート
// CSV書き込み
writer.write(
String.valueOf(value)
);
Java情報セキュリティの観点から見る重要性
String.valueOf()自体はセキュリティ機能ではありません。
しかし業務システムでは、ログ出力や監査記録処理の途中でNullPointerExceptionが発生すると、原因調査に必要な情報が失われる場合があります。
String.valueOf()を利用することで、null値を安全に扱いながらログや監査情報を出力できます。
ただし個人情報や認証情報を文字列化してログへ出力する場合は、マスキングやアクセス制御を必ず実施する必要があります。
null安全であることと情報保護は別問題であることを覚えておきましょう。
初心者が覚えておくべき重要ポイント
- 様々な型をStringへ変換できる
- nullでも例外にならない
- nullの場合は文字列”null”を返す
- ログ出力で非常によく使われる
- CSV出力や画面表示でも活躍する
- 通常のtoString()より安全に利用できる
- Javaの文字列処理の基礎となる重要メソッドである
まとめ
String.valueOf()は、あらゆる型の値を文字列へ変換するためのJava標準メソッドです。
- 数値や真偽値を簡単にStringへ変換できる
- オブジェクトにも対応している
- nullでもNullPointerExceptionが発生しない
- nullの場合は文字列”null”を返す
- ログ出力やCSV出力で非常によく利用される
- 業務システムでの利用頻度は非常に高い
- 安全な文字列変換の基本として覚えておくべきメソッドである
特に実務では「取得した値が必ず存在するとは限らない」という前提でコードを書くことが重要です。String.valueOf()を活用することで、NullPointerExceptionを回避しながら安全に文字列化できるため、Java開発者なら必ず使いこなせるようになっておきたい基本ユーティリティのひとつです。
