news 2026/1/2 9:27:30

Java占位符全览

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java占位符全览

格式化输出的实用指南

在 Java 中,占位符是格式化字符串输出的利器,让动态生成文本变得简单而优雅。无论是控制台输出、日志记录还是生成报告,掌握这些占位符都能让你的代码更加简洁专业。

---------------------------------------------------------------------------------------------------------------------------------

1. 字符串占位符

占位符说明示例输出
%s字符串String.format("Hello, %s!", "World")Hello, World!
%cUnicode 字符String.format("First character: %c", 'A')First character: A

2. 数值占位符

占位符说明示例输出
%d十进制整数String.format("Age: %d", 25)Age: 25
%x十六进制整数String.format("Hex: %x", 255)Hex: ff
%o八进制整数String.format("Octal: %o", 10)Octal: 12
%f浮点数String.format("Price: %.2f", 5999.99)Price: 5999.99
%e科学计数法String.format("Scientific: %e", 5999.99)Scientific: 5.999990e+03
%a十六进制浮点数String.format("Hex float: %a", 5999.99)Hex float: 0x1.7700000000000p+12

3. 格式化修饰符

修饰符说明示例输出
%,千位分隔符String.format("Price: ¥%,.2f", 5999.99)Price: ¥5,999.99
%.2f保留两位小数String.format("Price: %.2f", 5999.99)Price: 5999.99
%05d5位数字,不足补0String.format("ID: %05d", 25)ID: 00025
%-10s左对齐,10字符宽度String.format("Name: %-10s", "John")Name: John
%+d正数前加+号String.format("Value: %+d", 25)Value: +25

4. 特殊占位符

占位符说明示例输出
%n换行符String.format("Hello%nWorld")Hello<br>World
%b布尔值String.format("Valid: %b", true)Valid: true

二、实战示例

1. 商品信息格式化(你提供的示例)

pw.printf("商品:%s,价格:¥%,.2f,库存:%d%n", "笔记本电脑", 5999.99, 100); // 输出:商品:笔记本电脑,价格:¥5,999.99,库存:100

2. 日志格式化(常见场景)

logger.info("用户 {} 登录成功,IP: {}, 时间: {}", "张三", "192.168.1.1", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); // 输出:用户 张三 登录成功,IP: 192.168.1.1, 时间: 2023-10-25 14:30:45

3. 日期和时间格式化

String dateStr = String.format("今天是 %tF (星期%tA),时间是 %tT", new Date(), new Date(), new Date()); // 输出:今天是 2023-10-25 (星期三),时间是 14:30:45

4. 金额格式化(带货币符号)

String amount = String.format("总金额: ¥%,.2f (人民币)", 123456.78); // 输出:总金额: ¥123,456.78 (人民币)

5. 生成报表

System.out.printf("%-15s | %-10s | %-8s%n", "产品", "价格", "库存"); System.out.printf("%-15s | ¥%,.2f | %-8d%n", "笔记本电脑", 5999.99, 100); System.out.printf("%-15s | ¥%,.2f | %-8d%n", "智能手机", 3999.00, 250); // 输出: // 产品 | 价格 | 库存 // 笔记本电脑 | ¥5,999.99 | 100 // 智能手机 | ¥3,999.00 | 250

三、占位符的高级用法

1. 动态格式化

1int precision = 2; 2String formatted = String.format("Price: %." + precision + "f", 5999.99); 3// 输出:Price: 5999.99

2. 与MessageFormat结合使用

1String pattern = "用户 {0} 在 {1} 登录,IP: {2}"; 2String message = MessageFormat.format(pattern, "张三", new Date(), "192.168.1.1"); 3// 输出:用户 张三 在 Wed Oct 25 14:30:45 CST 2023 登录,IP: 192.168.1.1

3. 生成带格式的文本文件

1try (PrintWriter writer = new PrintWriter("report.txt")) { 2 writer.printf("%-20s | %-10s | %-10s%n", "Product", "Price", "Stock"); 3 writer.printf("%-20s | ¥%,.2f | %-10d%n", "Laptop", 1299.99, 50); 4 writer.printf("%-20s | ¥%,.2f | %-10d%n", "Smartphone", 699.50, 120); 5}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!