当前位置: 首页 > news >正文

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}
http://www.cnnetsun.cn/news/1406.html

相关文章:

  • IO流——解压缩流/压缩流
  • 项目知识——Monorepo(单体仓库)架构详解
  • 项目知识——API端点
  • 代码1:前端具体分析②
  • 基于SpringBoot+Vue的学生成绩综合评价方案的设计与实现
  • 基于SpringBoot+Vue的学生答题练习在线平台的设计与实现
  • 基于SpringBoot+Vue的在线文献检索系统的设计与实现
  • 基于SpringBoot+Vue的途乐自助旅游管理系统的设计与实现
  • 基于SpringBoot+Vue的山西高校毕业生信息咨询平台的设计与实现
  • 基于SpringBoot+Vue的高校智慧党建系统的设计与实现
  • 基于Android的作物病虫害防治科普系统的设计与实现
  • 基于Android的记账系统的设计与实现
  • 基于SpringBoot+Vue的北京市东城区旅游信息管理平台的设计与实现
  • 萤石开放平台 国标设备接入 | 三方品牌设备接入文档/海康NVR对接文档
  • 软件测试KPI指标体系构建指南
  • 测试用例库建设与管理方案
  • 构建高效可靠的企业级软件测试流程体系
  • 数字经济健康发展的双维路径:技术伦理与产业价值的重构
  • 打印杨辉三角
  • OpenWrt 双频合一 + 多路由 Mesh 组网完整方案
  • 使用 OpenWrt 组 Mesh 时解决 LuCI 中找不到应用的问题
  • 使用 OpenWrt 通过 LuCI 界面配置双频合一和 Mesh 组网
  • 雨课堂工程伦理期末
  • 12.10 - 合并两个有序链表 对字节对齐的理解
  • 【剑斩OFFER】算法的暴力美学——排序数组
  • 【剑斩OFFER】算法的暴力美学——交易逆序对的总数
  • 【全栈硬核实战】从零手搓一个基于 Gin + JS 的鉴权闭环系统
  • 【每天一个AI小知识】:什么是生成式AI?
  • C#字符串操作:11个必备方法全解析
  • Spring AOP场景2——数据脱敏(附带源码)