Java 教程

Java 教程 Java 简介 Java 下载安装和环境配置 Java 入门 Java 语法 Java 输出 Java 注释 Java 变量 Java 数据类型 Java 数据类型转换 Java 运算符 Java 字符串 Java 数学方法 Java 布尔值 Java If...Else Java Switch Java While 循环 Java For 循环 Java Break/Continue Java 数组

Java 方法

Java 方法 Java 方法参数 Java 方法重载 Java 作用域 Java 递归

Java 类库

Java OOP Java 对象和类 Java 类属性 Java 类方法 Java 构造函数 Java this 关键字 Java 修饰符 Java 封装 Java 包与API Java 继承 Java 多态 Java super 关键字 Java 内部类 Java 抽象类 Java 接口 Java 匿名登录 Java 枚举 Java 用户输入 Java 日期和时间

Java 错误

Java 错误 Java 调试 Java 异常 Java 多重异常 Java try-with-resources

Java 文件处理

Java 文件 Java 创建文件 Java 写入文件 Java 读取文件 Java 删除文件

Java I/O Streams

Java I/O Streams Java FileInputStream Java FileOutputStream Java BufferedReader Java BufferedWriter

Java 数据结构

Java 数据结构 Java 集合 Java List 列表 Java ArrayList Java LinkedList Java List 列表排序 Java Set Java HashSet Java TreeSet Java LinkedHashSet Java Map 映射 Java HashMap Java TreeMap Java LinkedHashMap Java Iterator 迭代器 Java 算法

Java 高级

Java 包装类 Java 泛型 Java 注解 Java 正则表达式 Java 线程 Java Lambda 表达式 Java 高级排序

Java 项目

Java 项目

Java 操作指南

Java 操作指南

Java 参考手册

Java 参考 Java 关键字 Java 字符串方法 Java 数学方法 Java 输出方法 Java 数组方法 Java ArrayList 方法 Java LinkedList 方法 Java HashMap 方法 Java Scanner 方法 Java File 方法 Java FileInputStream Java FileOutputStream Java BufferedReader Java BufferedWriter Java Iterator 方法 Java Collections 方法 Java System 方法 Java Errors & Exceptions

Java 实例

Java 实例 Java 练习 Java 测验 Java 编译器

Java 各版本参考

Java8 (2014-3-18) Java9 (2017-9-21) Java10 (2018-3-10) Java11 (2018 年 9 月) Java12 (2019 年 3 月) Java13 (2019 年 9 月) Java14 (2020-3-17) Java15 (2020 年 9 月) Java16 (2021 年 3 月)

Java 常用包参考

java.io 包 java.lang 包 java.math 包 java.time 包 java.util 包 java.util.regex 包 java.util.zip 包



Java printf() 输出方法

❮ 输出方法


示例

向控制台打印一些格式化文本。

%s 字符是字符串"World"的占位符:

System.out.printf("Hello %s!", "World");

亲自试一试 »

注:您可以在本页底部找到更多"动手试试"的示例。


定义和用法

printf() 方法输出一个格式化的字符串。

附加参数的数据会被格式化并写入格式化字符串中的占位符,这些占位符以 % 符号标记。参数的格式化方式取决于 % 符号后面的字符序列。

占位符

占位符的格式为 %[arg$][flags][width][.precision]conversion。方括号内的组件是可选的。

各组件说明:

  • arg$ - 可选。一个数字后跟一个 $ 符号,表示要使用的附加参数,参数编号从 1 开始。它可以替换为 <,表示应使用前一个占位符中的参数。
  • flags - 可选。以下任意字符的序列:
    • - - 将输出左对齐,方法是在右侧添加空格而不是左侧。
    • + - 使正数始终以"+"开头。
    • - (空格字符)这会在正数前添加一个空格,主要是为了使数字与负数的数字对齐。
    • 0 - 在数字左侧填充零。
    • , - 将数字分组(例如按千位分组),并在组之间添加分隔符。
  • width - 可选。一个整数,指定输出应占用的最小字符数。如有必要,会在左侧添加空格以达到此数字,如果使用 - 标志,则会在右侧添加空格。
  • .precision - 可选。一个 . 后跟一个整数,指示格式化数据中要显示的十进制位数。
  • conversion - 必需。一个字符,指示参数数据的表示方式。如果该字符为大写,则数据将尽可能以大写形式格式化。下表显示了可能的字符列表。

转换列表

字符 转换 描述
% 百分号 在输出中显示一个字面意义上的"%"字符。
n 换行符 在输出中显示一个换行符。
b 或 B 布尔值 将参数的布尔值显示为"true"或"false"。如果使用"B",则显示"TRUE"或"FALSE"。
c 或 C Unicode 字符 显示参数的 Unicode 字符表示形式。对于整数,这是与该数字对应的 Unicode 字符。如果使用"C",则该字符将尽可能转换为大写。
s 或 S 字符串 显示参数的默认字符串表示形式。如果使用"S",则字符串将尽可能转换为大写。
d 十进制整数 将整数表示为十进制整数。
h 或 H 无符号十六进制整数 将参数的二进制数据表示为无符号十六进制整数。如果使用"H",则数字 A 到 F 将以大写形式显示。

注意: 对于除正整数以外的任何数据,这不代表其真实值。

o 八进制整数 将整数表示为八进制整数。"#"标志将在数字前添加"0"。
x 或 X 十六进制整数 将一个整数表示为十六进制整数。"#"标志会在数字前加上"0x"。如果使用"X",则数字 A 到 F 和字母 X 会以大写形式显示。
e 或 E 科学计数法 以科学计数法表示一个浮点数。如果使用"E",则表示中的字母"E"将以大写形式显示。"#"标志会强制显示小数点,即使没有小数位。
f 浮点数 表示一个浮点数。即使没有小数位,使用"#"标志也会强制显示小数点。
g 或 G 通用数字 显示浮点数在 f 和 e 或 E 之间的最短表示形式。
a 或 A 十六进制浮点数 显示浮点数的内部十六进制表示形式。
t 或 T 时间或日期 显示格式化的日期或时间。t 或 T 后必须跟一个字符,用于指定日期或时间的格式。如果使用"T",则日期或时间的文本部分(例如"JANUARY")将大写。

以下字符可用于日期和时间格式化:

  • H - 24 小时制小时(00 至 23)
  • I - 12 小时制小时(01 至 12)
  • k - 24 小时制小时(0 至 23)
  • l(小写字母 'L')- 12 小时制小时(1 至 12)
  • M - 分钟(00 至 59)
  • S - 秒(00 至 59)(闰秒可能为 60)
  • L - 毫秒(000 至 999)
  • N - 纳秒(000000000 至 999999999)
  • p - "上午", "下午", "AM"或"PM"表示上午或下午
  • z - 与格林威治时间的差值(例如:-0800)
  • Z - 时区缩写(例如:EST、MDT)
  • s - 自 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的秒数
  • Q - 自 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)以来的毫秒数
  • B - 月份的完整文本表示(1 月至 12 月)
  • b 或 h - 月份的简短文本表示(三个字母)
  • A - 日期的完整文本表示(例如:星期一)
  • a - 日期的简短文本表示(例如:星期一)
  • C - 年份的前两位数字(例如,1970 年显示为"19")
  • Y -年份的四位数表示
  • y - 年份的两位数表示
  • j - 带前导零的日期(001 至 366)
  • m - 月份的数字表示(01 至 12)
  • d - 月份中的日期(01 至 31)
  • e - 月份中的日期(不带前导零)(1 至 31)
  • R - 24 小时制时间(例如:21:30)
  • T - 带秒的 24 小时制时间(例如:21:30:02)
  • r - 带秒的 12 小时制时间(例如:09:30:02 PM)("AM"和"PM"始终大写)
  • D - 日期表示形式为月/日/年(例如:12/17/23)
  • F - 日期表示形式为年-月-日(例如:2023-12-17)
  • c - 完整日期和时间(例如:2024年3月28日星期四 10:51:00 EDT)

语法

System.out.printf(locale, formatString, args)

参数值

参数 描述
locale 可选。用于确定某些格式的区域设置,例如小数点和分组分隔符使用的字符。
formatString 必需。包含用于指示如何格式化附加参数的占位符的字符串。
args 可选。方法的任意数量的附加参数,其值可以在 formatString 中进行格式化和显示。

技术细节

返回值: 一个 PrintStream 对象。
抛出异常: IllegalFormatException - 如果格式字符串包含无效占位符,或者占位符与参数的数据类型不兼容。
Java 版本: 1.5

更多示例

示例

打印包含字符串和整数的格式化文本:

System.out.printf("Hello %s! One kilobyte is %,d bytes.", "World", 1024);

亲自试一试 »

示例

以不同方式格式化浮点数:

// 默认
System.out.printf("%f%n", 123456.78);

// 保留两位小数
System.out.printf("%.2f%n", 123456.78);

// 不保留小数
System.out.printf("%.0f%n", 123456.78);

// 保留小数点,但不保留小数
System.out.printf("%#.0f%n", 123456.78);

// 分组显示数字
System.out.printf("%.2f%n", 123456.78);

// 精确到两位有效数字的科学计数法
System.out.printf("%.2e", 123456.78);

亲自试一试 »

示例

一个使用所有组件的占位符:

System.out.printf("%2$,3.2f %1$s", "meters", 1260.5052);

以下是占位符 %2$,3.2f 各部分的工作原理:

  • 2$ 表示使用第二个参数的值。
  • ," 表示数字应分组(通常按千位分组)。
  • 3 表示数据表示长度至少为 3 个字符。
  • .2表示小数点后应有两位数字。
  • f 表示数据以浮点数形式表示。

亲自试一试 »

示例

请以不同的顺序使用参数:

System.out.printf("%3$c %2$c %1$c", 'a', 'b', 'c');

亲自试一试 »

示例

根据 Unix 时间戳格式化日期:

long date = 1711638903488L; // Unix 时间戳(自 1970 年 1 月 1 日以来的毫秒数)

// Time
System.out.printf("%tl:%<tM %<tp%n", date);

// Month and day
System.out.printf("%tB %<te%n", date);

// 完整日期表示
System.out.printf("%tc%n", date);

亲自试一试 »

示例

根据 Unicode 代码点表示字符:

// 根据 Unicode 代码点表示字符
System.out.printf("%c%c%c%c%c%n", 72, 101, 108, 108, 111);

// 强制将 Unicode 字符转换为大写
System.out.printf("%C%C%C%C%C", 72, 101, 108, 108, 111);

亲自试一试 »


❮ 输出方法