また、 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 | 日にち |
%% | パーセント記号 % |
「実際には、これらの形式指定子にも独自の設定とサブ設定があります。」
「しかし、始めるにはこれで十分です。そうでない場合は、ここに公式ドキュメントへのリンクがあります。」
GO TO FULL VERSION