また、 String.formatメソッドについてもお話したいと思います。

「 Stringクラスの静的メソッドですが、とても便利です。回りくどい方法を教えてください。」

「1 行のテキストに複数の変数を表示する必要がある場合、どうすればよいでしょうか?」

「何のテキストですか?」

「たとえばこれです。」

次の変数があるとします。
String name = "Bender";
int age = 12;
String friend = "Fry";
int weight = 200;
必要な出力:
User = {name: Bender, age: 12 years, friend: Fry, weight: 200 kg.}

「私なら次のようにします。」

String name = "Bender";
int age = 12;
String friend = "Fry";
int weight = 200;

System.out.println("User = {name: " + name + ", age: " + age + " years, friend: " + friend + ", weight: " + weight + " kg.}");

「あまり読みにくいですね?」

「大丈夫だと思います。」

「しかし、変数名が長い場合や、データを取得するためにメソッドを呼び出す必要がある場合は、あまり読みにくくなります。」

System.out.println("User = {name: " + user.getName() + ", age: " + user.getAge() + " years, friend: " + user.getFriends().get(0) + ", weight: " + user.getExtraInformation().getWeight() + " kg.}");

「そうですね、もしそうだとしたら、そうですね、あまり読みにくいでしょうね。」

「実際のところ、これは実際のプログラムでは常に起こっているので、String.format メソッドを使用して作業を簡素化する方法を示したいと思います。」

「早く教えてください、どんな魔法の方法ですか?」

「上記のコードは次のように記述できます。」

String text = String.format("User = {name: %s, age: %d years, friend: %s, weight: %d kg.}",
user.getName(), user.getAge(), user.getFriends().get(0), user.getExtraInformation().getWeight())

System.out.println(text);

String.formatメソッドの最初のパラメータは、値を配置する場所に特殊文字 (%s、%d) を含む書式文字列です。」

「フォーマット文字列の後に、%s 文字と %d 文字を置き換える値を渡します。」

「文字列を挿入する必要がある場合は %s を書き込み、数値が必要な場合は %d を使用します。」

「これを例で見てみると分かりやすいでしょう。」

String s = String.format("a = %d, b = %d, c = %d", 1, 4, 3);
結果:
s は、«a = 1、b = 4、c = 3» と等しくなります。

「はい、とても便利ですね。」

「そして、次のようにすることもできます。」

int a = -1, b = 4, c = 3;
String template;
 if (a < 0)
  template = "Warning! a = %d, b = %d, c = %d";
 else
  template = "a = %d, b = %d, c = %d";

System.out.println(String.format(template, a, b, c) );
出力:
Warning! a = -1, b = 4, c = 3

「ふーん。それは本当に便利な方法ですね。ありがとう、エリー。」

「format メソッドで他のデータ型を使用したい場合は、次の表が役に立ちます。」

シンボル タイプ
%s
%d 整数: int、long など。
%f 実数: float、double
%b ブール値
%c 文字
%t 日にち
%% パーセント記号 %

「実際には、これらの形式指定子にも独自の設定とサブ設定があります。」

「しかし、始めるにはこれで十分です。そうでない場合は、ここに公式ドキュメントへのリンクがあります。」

追加資料へのリンク