Java Tips | 基本ユーティリティ:String.valueOf()

Web APP Java
スポンサーリンク
スポンサーリンク

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)
Java

nullなら文字列”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);
Java

null安全テンプレート

// 例外にならない
String text =
        String.valueOf(obj);
Java

ログ出力テンプレート

// ログ出力
log.info(
        String.valueOf(userId)
);
Java

CSV出力テンプレート

// 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開発者なら必ず使いこなせるようになっておきたい基本ユーティリティのひとつです。

タイトルとURLをコピーしました