Java String.Format() 方法及
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java String.Format() 方法及参数说明
文章出处:飞诺网():/course/3_program/java/javajs/20091119/182906.html
JDK1.5中,String类新增了一个很有用的静态方法String.format():
format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。举几个这个方法实用的例子(注释是输出结果):
CODE:
long now = System.currentTimeMillis();
String s = String.format("%tR", now); // "15:12"
CODE:
// Current month/day/year
Date d = new Date(now);
s = String.format("%tD", d); // "07/13/04"
CODE:
s = String.format("%,d", Integer.MAX_VALUE); // "2,147,483,647"
CODE:
s = String.format("%05d", 123); // "00123"
是不是很方便,让人动心啊?哈哈,还有更多的效果!
其实format函数有些类似c语言中printf函数,一些格式字符串与C 类似,但已进行了某些定制,以适应Java 语言,并且利用了其中一些特性。此方法提供了对布局对齐和排列的支持,以及对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持。支持诸如byte、BigDecimal和Calendar 等常见Java 类型。
产生格式化输出的每个方法都需要格式字符串和参数列表。格式字符串是一个String,它可以包含固定文本以及一个或多个嵌入的格式说明符。请考虑以下示例:
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
格式字符串是format 方法的第一个参数。它包含三个格式说明符"%1$tm"、"%1$te" 和"%1$tY",它们指出应该如何处理参数以及在文本的什么地方插入它们。格式字符串的其余部分是包括"Dukes Birthday: " 和其他任何空格或标点符号的固定文本。参数列表由传递给
位于格式字符串之后的方法的所有参数组成。在上述示例中,参数列表的大小为1,由新对象Calendar 组成。
1.常规类型、字符类型和数值类型的格式说明符的语法如下:%[argument_index$][flags][width][.precision]conversion
可选的argument_index是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由"1$" 引用,第二个参数由"2$" 引用,依此类推。
可选的flags 是修改输出格式的字符集。有效标志的集合取决于转换类型。
可选width 是一个非负十进制整数,表明要向输出中写入的最少字符数。
可选precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。所需的conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集合取决于参数的数据类型。
2.用来表示日期和时间类型的格式说明符的语法如下:
%[argument_index$][flags][width]conversion
可选的argument_index、flags 和width 的定义同上。
所需的conversion 是一个由两字符组成的序列。第一个字符是't' 或'T'。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由GNU date 和POSIX strftime(3c) 定义的字符。
3.与参数不对应的格式说明符的语法如下:
%[flags][width]conversion
可选flags 和width 的定义同上。
所需的conversion 是一个表明要在输出中所插内容的字符。
转换
转换可分为以下几类:
1. 常规- 可应用于任何参数类型
2. 字符- 可应用于表示Unicode 字符的基本类型:char、Character、byte、Byte、short 和Short。当Character.isValidCodePoint(int) 返回true 时,可将此转换应用于int和Integer 类型
3. 数值
1. 整数- 可应用于Java 的整数类型:byte、Byte、short、Short、int、Integer、long、Long 和BigInteger
2. 浮点- 可用于Java 的浮点类型:float、Float、double、Double 和BigDecimal 4. 日期/时间- 可应用于Java 的、能够对日期或时间进行编码的类型:long、Long、Calendar 和Date。
5. 百分比- 产生字面值'%' ('\u0025')
6. 行分隔符- 产生特定于平台的行分隔符
下表总结了受支持的转换。由大写字符(如'B'、'H'、'S'、'C'、'X'、'E'、'G'、'A' 和'T')表示的转换与由相应的小写字符的转换等同,根据流行的Locale 规则将结果转换为大写形式除外。后者等同于String.toUpperCase() 的以下调用.
转换参数类别说明
'b', 'B' 常规如果参数arg为null,则结果为"false"。如果arg是一个boolean值或Boolean,则结果为String.valueOf() 返回的字符串。否则结果为"true"。
'h', 'H' 常规如果参数arg为null,则结果为"null"。否则,结果为调用Integer.toHexString(arg.hashCode()) 得到的结果。
's', 'S' 常规如果参数arg为null,则结果为"null"。如果arg实现Formattable,则调用arg.formatTo。否则,结果为调用arg.toString() 得到的结果。
'c', 'C' 字符结果是一个Unicode 字符
'd' 整数结果被格式化为十进制整数
'o' 整数结果被格式化为八进制整数
'x', 'X' 整数结果被格式化为十六进制整数
'e', 'E' 浮点结果被格式化为用计算机科学记数法表示的十进制数
'f' 浮点结果被格式化为十进制数
'g', 'G' 浮点根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。
'a', 'A' 浮点结果被格式化为带有效位数和指数的十六进制浮点数
't', 'T' 日期/时间日期和时间转换字符的前缀。请参阅日期/时间转换。
'%' 百分比结果为字面值'%' ('\u0025')
'n' 行分隔符结果为特定于平台的行分隔符
文章出处:飞诺网():/course/3_program/java/javajs/20091119/182906.html