String.format
构建格式化字符串
String.format 是 CoddyKit 上的免费 Java Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。
格式化但不打印
printf 会将文本直接发送到控制台。但有时您希望将格式化后的文本作为 String 保存、返回或重复使用。
String.format 正好可以实现这一点:使用相同的规则,但它会返回一个值,而不是进行打印。
第一次使用 String.format
String.format 使用与 printf 相同的占位符。它会构建一个新的字符串并将其返回给您。
这里将结果保存到 msg 中,然后进行打印。
public class Main {
public static void main(String[] args) {
String msg = String.format("Hello, %s!", "World");
System.out.println(msg);
}
}相同的说明符
您之前学到的所有内容都适用:%d、%f、%.2f、宽度和标志在 String.format 中都可以使用。
唯一的区别是,结果会被返回,而不是直接显示。
public class Main {
public static void main(String[] args) {
String s = String.format("%s: %.2f", "Price", 9.5);
System.out.println(s);
}
}保存结果
由于它会返回一个 String,您可以将其保存在变量中、与其他内容连接,或将其传给另一个方法。
这对于逐步构建消息非常有用。
public class Main {
public static void main(String[] args) {
String label = String.format("#%03d", 7);
System.out.println("ID " + label);
}
}返回格式化文本
方法可以使用 String.format 返回一个整洁的字符串。这样可以将格式化逻辑集中在一个地方。
下面的 greet 会返回格式化后的问候语。
public class Main {
static String greet(String name) {
return String.format("Welcome, %s!", name);
}
public static void main(String[] args) {
System.out.println(greet("Mia"));
}
}不会自动换行
与 printf 一样,String.format 不会添加换行符,除非您在格式字符串中写入 \n。
如果您使用 println 打印结果,println 会为您添加换行符。
public class Main {
public static void main(String[] args) {
String s = String.format("Line one");
System.out.println(s);
}
}多个值
您可以传入与占位符数量相同的任意多个参数。它们会像 printf 一样从左到右填入各个位置。
这样可以轻松地将一行数据构建为一个字符串。
public class Main {
public static void main(String[] args) {
String row = String.format("%s | %d | %.1f", "Tea", 3, 2.5);
System.out.println(row);
}
}重复使用格式
由于格式字符串只是文本,您可以在循环中多次应用它,以生成格式一致的字符串。
每次调用都会使用新值返回一个新的字符串。
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
System.out.println(String.format("Item %d", i));
}
}
}printf 在内部使用 format
在底层,System.out.printf(fmt, args) 的行为类似于打印 String.format(fmt, args) 的结果。
因此,选择二者的关键在于您是想立即打印,还是想保留文本供之后使用。
构建日志和标签
String.format 适合用于日志行、用户界面标签和文件名,因为这些内容通常需要精确的格式。
将格式集中管理后,只需修改一处,就能更新每条消息。
public class Main {
public static void main(String[] args) {
int code = 404;
String log = String.format("[ERROR %d] not found", code);
System.out.println(log);
}
}相同的类型规则
说明符和值之间的规则完全相同:%d 需要整数,%f 需要浮点值,而类型不匹配会在运行时抛出异常。
运行前请仔细检查配对是否正确。
快速检查
String.format 与 printf 有什么区别?
回顾
String.format 遵循与 printf 相同的规则,但会返回一个可以保存、返回或重复使用的 String。
接下来,您将组合宽度和对齐方式来构建整齐的表格。
常见问题解答
「String.format」课时是免费的吗?
是的 — 「String.format」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。
「String.format」这节课中我会学到什么?
构建格式化字符串 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「String.format」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。