IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

JavaのString.formatを理解しよう!メソッドの基本的な使い方をご紹介

Javaプログラミングで、文字列の整形は頻繁におこなわれる作業です。

JavaのString.formatメソッドは、整形作業を大幅に効率化してくれる便利な機能です。C言語のprintf関数に似た直感的な使い方で、複雑な文字列整形も簡単に実現できます。

本記事では、String.formatの基本から応用まで、実際のコード例を交えて詳しく解説します。多彩な機能を学びながら、コードの可読性と保守性を高める方法を探っていきましょう。

JavaのString.formatとは

JavaのString.formatは、文字列を整形するための便利なメソッドです。String.formatメソッドを使うと、指定したフォーマットにしたがって文字列を簡単に作成できます。

String.formatは、C言語のprintf関数と似た使い方をします。フォーマット文字列と、それに対応する引数を指定すると、さまざまな形式の文字列を生成できます。

例えば、以下のようなコードで文字列を整形できます:

String 名前 = “山田太郎”;

int 年齢 = 30;

String 結果 = String.format(“%sさんは%d歳です。”, 名前, 年齢);

System.out.println(結果);

// 出力: 山田太郎さんは30歳です。

String.formatメソッドは、数値、日付、文字列などさまざまなデータ型に対応しており、柔軟な文字列整形が可能です。また、桁数の指定や、小数点以下の桁数の制御なども簡単におこなえます。

String.formatを使う際は、NullPointerExceptionに注意が必要です。フォーマット文字列や引数にnullを渡すと、例外の発生する可能性があるため、nullチェックをおこなうか、Objects.requireNonNullなどのメソッドを使って、nullの場合の動作を制御するとよいでしょう。

String.formatは、ログ出力やユーザー向けのメッセージ生成など、さまざまな場面で活用できる便利なメソッドです。適切に使うことで、コードの可読性と保守性を高めることができます。

JavaのString.formatのメソッドと使い方について

JavaのString.formatメソッドは、文字列を整形するための便利な機能です。

本項では、String.formatメソッドの基本の使い方を詳しくご紹介します。

基本的な使い方

String.formatメソッドの基本的な使い方は、次のとおりです。

String 結果 = String.format(“書式指定文字列”, 値1, 値2, …);

書式指定文字列には、通常の文字列とフォーマット指定子を含めます。フォーマット指定子は%記号で始まり、変換する値の種類を指定します。例えば、整数を表示する場合は%dを使います。

フォーマット指定子

値の種類

%s

String

%d

int

使用例:

String 名前 = “田中”;

int 年齢 = 30;

String 結果 = String.format(“%sさんは%d歳です。”, 名前, 年齢);

System.out.println(結果);

// 出力: 田中さんは30歳です。

上記のように、String.formatを使うと、変数の値を簡単に文字列に組み込めます。

true/falseを指す場合

ブール値をフォーマットする場合は、%bを使います。

boolean 合格 = true;

String 結果 = String.format(“試験の結果:%b”, 合格);

System.out.println(結果);

// 出力: 試験の結果:true

%bは、trueまたはfalseを文字列として出力します。非ブール値を渡した場合、nullでなければtrue、nullならfalseと表示されます。

文字列を扱う場合

文字列をフォーマットする場合は、%sを使います。

String 名前 = “鈴木”;

String 結果 = String.format(“こんにちは、%s様”, 名前);

System.out.println(結果);

// 出力: こんにちは、鈴木様

文字列の幅を指定したり、左寄せや右寄せにしたりもできます。

String 名前 = “佐藤”;

String 結果 = String.format(“%-10s様”, 名前);

System.out.println(結果);

// 出力: 佐藤        様

上記の例では、%-10sで10文字分の幅を確保し、左寄せにしています。

数値を扱う場合

数値のフォーマットには、%d(整数)、%f(浮動小数点数)、%e(指数表記)などを使います。

例えば、整数をフォーマットする場合は次のように記述します。

int 数値 = 123;

String 結果 = String.format(“数値は%dです。”, 数値);

System.out.println(結果); // 出力:数値は123です。

浮動小数点数の場合は、小数点以下の桁数を指定できます。

double 数値 = 3.14159;

String 結果 = String.format(“円周率は%.2fです。”, 数値);

System.out.println(結果); // 出力:円周率は3.14です。

大きな数値をカンマ区切りで表示したい場合は、次のように記述します。

int 数値 = 1234567;

String 結果 = String.format(“金額は%,d円です。”, 数値);

System.out.println(結果); // 出力:金額は1,234,567円です。

NumberFormatクラスが適するケース

より複雑な数値フォーマットが必要な場合は、java.text.NumberFormatクラスを使用します。NumberFormatクラスを使うと、通貨や百分率の表示、地域に応じた数値表現などが可能になります。

例えば、日本円の通貨表示をする場合は次のようになります。

import java.text.NumberFormat;

import java.util.Locale;

 

double 金額 = 1234567.89;

NumberFormat 通貨フォーマット = NumberFormat.getCurrencyInstance(Locale.JAPAN);

String 結果 = 通貨フォーマット.format(金額);

System.out.println(結果); // 出力:¥1,234,568

上記のように、NumberFormatクラスを使うことで、より柔軟な数値フォーマットが可能になります。String.formatメソッドと組み合わせれば、さまざまな表現が可能になり、プログラムの国際化、可読性、使いやすさが向上します。

日付Formatを扱う場合

日付と時刻のフォーマットには、%tを使います。%tのあとに別の文字を付けて、具体的な形式を指定します。

import java.util.Date;

 

Date 現在 = new Date();

String 結果1 = String.format(“日付: %tF (%tY-%tm-%td)”, 現在, 現在);

String 結果2 = String.format(“時刻: %tT (%tH:%tM:%tS)”, 現在, 現在);

System.out.println(結果1);

System.out.println(結果2);

// 出力例:

// 日付: 2024-07-20 (2024-07-20)

// 時刻: 14:30:45 (14:30:45)

%tFは年月日を、%tTは時分秒を示します。

%tで指定できる日付時刻のパートは多数あります。一部を下記に紹介します。

フォーマット指定子

出力される文字列

概要

%tH

00 – 23

24時間制の時

%tk

0 – 23

24時間制の時

%tM

00 – 59

%tS

00 – 60

%tb

Jan, Feb

ロケール固有の月の省略名

%ta

Sun, Mon

ロケール固有の曜日の短縮名

%tY

0000 – 9999

%tm

01 – 13

%td

01 – 31

月の日

%tT

00:00:00 – 23:59:60

24時間制で書式設定された時刻

%tF

1970-01-01 – 9999-12-31

ISO 8601に準拠した日付

その他基本的なフォーマット指定子と使い方の実装例

String.formatには、他にもさまざまな使い方があります。

// 文字のフォーマット

char 文字 = ‘A’;

String 結果1 = String.format(“文字: %c”, 文字);

 

// 16進数のフォーマット

int 数値 = 255;

String 結果2 = String.format(“16進数: %x”, 数値);

 

// 複数の引数を使用

String 名前 = “山田”;

int 年齢 = 25;

double 身長 = 170.5;

String 結果3 = String.format(“%sさん %d歳 身長%.1fcm”, 名前, 年齢, 身長);

 

System.out.println(結果1);  // 文字: A

System.out.println(結果2);  // 16進数: ff

System.out.println(結果3);  // 山田さん 25歳 身長170.5cm

上記の例のように、String.formatを使うと、さまざまな種類のデータを簡単に文字列に変換できます。用途に応じて適切な指定子を選び、効果的に活用しましょう。

フォーマット指定子について

フォーマット指定子は、String.formatメソッドで文字列を整形する際に使用する特殊な記号です。指定子を使えば、数値や日付、文字列などのデータをカスタマイズした形式で出力できます。

シンプルな場合は%s%dのようにパーセント記号と変換する型に対応する文字で構成されます。

フル仕様のフォーマット指定子の構造は「%[引数インデックス$][フラグ][幅][.精度]変換文字」です。([]部分は省略可能)

各要素は以下のような役割を持ちます。

指定子の要素

役割

引数インデックス

複数の引数がある場合に、何番目の引数を使うかを指定します。

フラグ

出力を調整します。例えば、左寄せ(-)や符号の表示(+)などを指定できます。

出力する最小の文字数を指定します。

精度

小数点以下の桁数や文字列の最大長を指定します。

変換文字

データの型に応じた出力形式を指定します。s,d,f,e,b,xなど

例えば、以下のようなコードで数値を整形できます。

int 数値 = 42;

String 結果 = String.format(“%5d”, 数値);

System.out.println(結果); // ”   42″と出力されます

上記のコードでは、フォーマット指定子“%5d”を使っています。5は幅を表し、dは整数を表す変換文字です。

フラグを使用すると、出力をさらに調整できます。例えば、左寄せにしたい場合は以下のようになります。

String 左寄せ結果 = String.format(“%-5d”, 数値);

System.out.println(左寄せ結果); // “42   “と出力されます

フォーマット指定子により、データを見やすく整形し、プログラムの出力をカスタマイズできます。

まとめ

String.formatを使えば、複雑な文字列整形も簡単におこなえます。

数値のカンマ区切りや小数点以下の桁数制御、日付時刻の柔軟なフォーマットなど、多彩な機能を提供します。

コードの可読性と保守性向上につながるので、日々のプログラミングに積極的に取り入れてみてはいかがでしょうか。