“我还想告诉你有关String.format方法的信息。”

“它是String类的一个静态方法,但是非常有用,让我绕一圈。”

“如果你需要在一行文本中显示多个变量,你会怎么做?”

“什么文字?”

“这个,例如:”

给定以下变量:
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

“嗯。这真是一个有用的方法。谢谢,艾莉。”

“如果你想在格式化方法中使用其他数据类型,这里有一个表格可以帮助你:”

象征 类型
%s 细绳
%d 整数:int、long 等。
%F 实数:float, double
%b 布尔值
%C 字符
%t 日期
%% 百分号 %

“实际上,这些格式说明符也有自己的设置和子集。”

“但这足以让你开始。如果没有,这里是官方文档的链接:”

链接到其他材料