Java String.format详解:格式化输出的艺术

需积分: 50 21 下载量 120 浏览量 更新于2024-09-12 2 收藏 6KB TXT 举报
"JAVA String.format方法使用介绍" Java中的`String.format()`方法是自JDK 1.5开始引入的,它提供了一种强大的方式来将各种数据类型格式化为字符串。这个方法主要由两个核心参数组成:`format`字符串和`arguments`对象数组。`format`参数定义了输出字符串的格式,它类似于C语言中的`printf`函数,而`arguments`则是待格式化的对象。 `format`字符串中的语法相当丰富,主要由以下几种格式化符号构成: 1. **数字索引** `%[index$]`:`index`是一个可选的数字,用于指定`arguments`数组中的位置。例如,`%1$`表示第一个参数,`%2$`表示第二个参数,以此类推。 2. **宽度指示器** `[-]width`:`width`是输出字段的最小宽度。如果值的长度小于宽度,那么它将被填充以达到指定的宽度。`-`符号表示左对齐,否则默认右对齐。 3. **精度控制** `.precision`:对于浮点数,`precision`定义了小数点后的位数;对于字符串,它限制了输出的最大字符数。 4. **类型修饰符** `[flag]`:例如,`+`表示始终在数字前面加上正负号,`0`表示用零填充,`,`用于添加千位分隔符,`#`用于在八进制或十六进制输出中显示前缀(如`0x`)。 以下是一些示例,展示了如何使用这些格式化符号: ```java System.out.println(String.format("%1$,09d",-3123)); // 输出:-3,123 System.out.println(String.format("%1$9d",-31)); // 输出: -31 System.out.println(String.format("%1$-9d",-31)); // 输出:-31 System.out.println(String.format("%1$(9d",-31)); // 输出:(31) System.out.println(String.format("%1$#9x",5689)); // 输出:0x5689 ``` 5. **指数格式** `%[eEfgG]`:用于科学计数法。`e`和`E`是小写的科学记数法,`E`是大写的。`f`、`g`和`G`用于普通浮点数的显示,`g`和`G`会根据数值大小自动选择最紧凑的表示。 6. **百分比格式** `%d%`:当百分号`%`后面跟着另一个`%`时,会输出一个单个的`%`字符。例如,`System.out.println(String.format("%1$d%%",12))`将输出`12%`。 此外,`String.format()`方法还可以获取系统的属性,例如: ```java String javaVersion = System.getProperty("java.version"); System.out.println(String.format("Java 版本: %s", javaVersion)); ``` 通过以上方式,`String.format()`方法可以灵活地处理各种类型的格式化需求,使得代码更加清晰易读,同时增强了代码的可维护性。在编写需要输出复杂格式字符串的Java代码时,这是一个非常实用的工具。