JavaのString.formatは、文字列を自由自在に整形できる強力なメソッドです。本記事では、基本的な使い方から応用テクニックまで、実践的なコード例を交えて詳しく解説します。
数値、日付、文字列の整形はもちろん、0埋めやカンマ区切りなど、さまざまなケースに対応する方法を学べます。
さらに、関連する文字列操作クラスの活用法も紹介し、より効率的なJavaプログラミングのヒントを提供します。
Javaプログラミングの文字列操作スキル向上にお役立てください。
JavaのString.formatとは?

JavaのString.formatは、文字列を整形するための便利なメソッドです。
String.formatメソッドを使うと、数値や日付、文字列などのデータを指定したフォーマットに沿って整形できます。
String.formatは、C言語のprintf関数と似た機能を持っています。書式指定文字列と呼ばれる特殊な文字列を使って、どのようにデータを表示するかを指定します。例えば、数値の桁数を揃えたり、小数点以下の桁数を指定したりできます。
String.formatを使いこなすと、データの表示を細かく制御できるようになります。各種レポート生成やユーザーインターフェースの設計、ログ出力など、多くの場面で活用できます。
次のセクションでは、具体的な使い方を見ていきましょう。
JavaのString.formatメソッドの使い方
JavaのString.formatメソッドは、文字列を特定の書式に沿って整形する便利なメソッドです。
本項ではformatメソッドの使い方をケース別にご紹介します。
String.formatの基本的な使い方
String.formatメソッドは、書式指定文字列と、対応する引数を受け取ります。
書式指定文字列内の特殊な記号(%で始まる)部分が、対応する引数の値で置き換えられます。
実装例
String 名前 = “山田太郎”;
int 年齢 = 30;
String 結果 = String.format(“私の名前は%sで、年齢は%d歳です。”, 名前, 年齢);
System.out.println(結果); // 出力: 私の名前は山田太郎で、年齢は30歳です。
0埋めコードを使用する場合
数値の前に0を付けて表示したい場合、0埋めコード(例 %04d)を使用します。0埋めは、日付や時刻の表示によく使われます。
実装例
int 月 = 6;
int 日 = 1;
String 日付 = String.format(“%02d月%02d日”, 月, 日);
System.out.println(日付); // 出力: 06月01日
文字・文字列を使用する場合
文字や文字列を整形する場合、%sを使用します。文字列の幅を指定したり、左右の揃え方を調整できます。
半角スペース埋めコードを使用する場合
数値や文字列の前後にスペースを入れて表示したい場合、半角スペース埋めコードを使用します。桁数を指定できるため、表形式のデータを整えて表示できます。
実装例
String 左揃え = String.format(“%-10s”, “左”); // 10桁で左揃え(半角スペース埋め)
String 右揃え = String.format(“%10s”, “右”); // 10桁で右揃え(半角スペース埋め)
System.out.println(左揃え);
System.out.println(右揃え);
// 出力:
// 左
// 右
カンマ区切りを使用する場合
大きな数値をカンマ区切りで表示したい場合、カンマ区切りコードを使用します。カンマ区切りは、金額表示などによく使われます。
実装例
int 金額 = 1234567;
String 表示金額 = String.format(“%,d円”, 金額);
System.out.println(表示金額); // 出力: 1,234,567円
NumberFormatクラスを使用する場合
より複雑な数値フォーマットが必要な場合、NumberFormatクラスを使用できます。NumberFormatを使うと、通貨や百分率の表示など、より細かい制御が可能です。
実装例
import java.text.NumberFormat;
import java.util.Locale;
double 価格 = 1234.56;
NumberFormat 通貨形式 = NumberFormat.getCurrencyInstance(Locale.JAPAN);
String 表示価格 = 通貨形式.format(価格);
System.out.println(表示価格); // 出力: ¥1,235
書式指定記号の一覧
書式指定文字列のなかで用いられる記号を上記で登場したものも含めてご紹介します。
種別 | 書式指示子 | 説明 |
文字列 | %s | String出力 |
整数 | %d | int出力 |
浮動小数点 | %f | 3.14など |
ゼロ埋め | %02d | 2桁幅 |
半角スペース右寄せ | %10s | 10桁幅 |
半角スペース左寄せ | %-10s | 10桁幅 |
カンマ区切り | %,d | 1,234など |
JavaのString.formatは他にも多数の書式指定に対応しています。
String.formatと一緒に学習できるクラスについて
String.formatと併せて学習すると効果的なクラスがいくつかあります。本項でご紹介するクラスを理解すると、文字列操作の幅が広がり、より柔軟なプログラミングが可能となります。
関連する文字列操作クラスの概要
本項で紹介する主な文字列操作クラスの特徴は以下のとおりです。
クラス名 | 特徴 |
StringBuilder | 単一スレッドでの使用に適した、文字列の連結・変更のためのクラス。StringBufferに比べてパフォーマンスが優れる。 |
StringBuffer | マルチスレッド環境での使用に安全な、文字列の連結・変更のためのクラス。StringBuilderに比べてパフォーマンスが劣る。 |
StringUtils (Apache Commons Lang) | 文字列操作のためのユーティリティクラス。null安全な操作、文字列の空白チェックなど、便利な機能を提供する。 |
SimpleDateFormat | 日付と時刻のフォーマットを柔軟に扱うためのクラス。特定の形式で日付・時刻を表示したり、文字列から日付オブジェクトを生成したりできる。 |
MessageFormat | パラメータ化された文字列を作成するためのクラス。複数の引数を含む文字列を簡単に生成でき、国際化にも対応している。 |
各クラスの基本的な使用方法をコード例を使って見ていきましょう。
StringBuilder例
StringBuilder sb = new StringBuilder();
sb.append(“Hello”);
sb.append(” “);
sb.append(“World”);
String result = sb.toString();
System.out.println(result); // 出力: Hello World
上記コードでは、append()メソッドを使い文字列を連結し、最後にtoString()メソッドで、構築した文字列をStringオブジェクトに変換しています。
StringBuilderは、文字列の頻繁な変更や連結をおこなう際に、Stringクラスよりも効率的に動作します。
StringUtilsの例 (Apache Commons Lang)
import org.apache.commons.lang3.StringUtils;
String text = ” Hello, World! “;
String trimmed = StringUtils.trim(text);
System.out.println(trimmed); // 出力: Hello, World!
boolean isEmpty = StringUtils.isEmpty(null);
System.out.println(isEmpty); // 出力: true
StringUtilsクラスは、文字列操作の便利なメソッドを提供します。
trim()メソッドは文字列の前後の空白を削除し、isEmpty()メソッドは文字列がnullまたは空(長さが0)かどうかをチェックします。
StringUtilsのメソッドは、null安全で、NullPointerExceptionを防ぐのに役立ちます。
SimpleDateFormatの例
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String formattedDate = sdf.format(now);
System.out.println(formattedDate); // 出力: 2024-07-22 14:30:45
コンストラクタで書式を指定し、format()メソッドで日付オブジェクトから文字列に変換します。
MessageFormatの例
Object[] arguments = {“Yamada”, “tomorrow”, “rain”}; // 引数の配列を定義
String patternJa = “{0}さん、{1}は{2}です。”; // 日本語のメッセージパターンを定義
String patternEn = “{0}, it will be {2} {1}.”; // 英語のメッセージパターンを定義
String messageJa = MessageFormat.format(patternJa, arguments); // 日本語のメッセージを生成
String messageEn = MessageFormat.format(patternEn, arguments); // 英語のメッセージを生成
System.out.println(“日本語: ” + messageJa); // 出力: 日本語: Yamadaさん、tomorrowはrainです。
System.out.println(“English: ” + messageEn); // 出力: English: Yamada, it will be rain tomorrow.
format()メソッドは、パターン文字列内の置換フィールド({0}、{1}など)を、引数配列の対応する要素で置き換えます。
特に国際化されたアプリケーションで、異なる言語のメッセージを生成する際に便利です。
各クラスの使い分け
上記のクラスを組み合わせて使用すると、効率的で柔軟な文字列処理が可能になります。
例えば、StringBuilderでデータを構築し、SimpleDateFormatで日付をフォーマットし、最後にString.formatで全体を整形するなどの使い方ができます。
各クラスの特徴を理解し、適切に使い分ければ、文字列処理の効率や安全性を向上できます。また、上記のクラスの使用方法を習得すると、コードの可読性や保守性もアップします。
まとめ
JavaのString.formatメソッドをご紹介しました。String.formatを使いこなすことで、文字列の形式を細かく制御できます。
0埋め、カンマ区切り、左右揃えなど、多彩な機能を駆使して、見やすく整形されたテキストを生成できます。
本記事を参考に、ぜひ実際のプロジェクトでString.formatを活用してみてください。
フリーランスの案件をお探しの方はTechReachにご相談ください。
TechReachを運営する株式会社アールストーンはIT・Web業界特化で15年以上の実績がございます。
そのため、高単価・高品質な数多くの案件紹介が可能です。
また一人のコンサルタントが企業と求職者様の担当を行う「両面型エージェント」を採用しているため、あなたの希望に合う案件がきっと見つかるはずです。
TechReachを活用して、理想の案件を見つけましょう!