??xml version="1.0" encoding="utf-8" standalone="yes"?>
CZQ?br />
int id = 0;
String id2 = String .format("%010d", id); //前导|零Q?0位长度的字符?br />
函数原型Q?tt>
format
public static String format(String format,
Object... args)
使用指定的格式字W串和参数返回一个格式化字符丌Ӏ?
始终使用 Locale.getDefault() q回的语a环境?
参数Q?/strong>
format - 格式字符?
args - 格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参敎ͼ则忽略这些额外的参数。参数的数目是可变的Q可以ؓ(f) 0。参数的最大数目受 Java Virtual Machine Specification 所定义?Java 数组最大维度的限制。有?null 参数的行Z赖于转换?
q回Q?/strong>
一个格式化字符?
抛出Q?/strong>
IllegalFormatException - 如果格式字符串中包含非法语法、与l定的参C兼容的格式说明符Q格式字W串l定的参C够,或者存在其他非法条件。有x有可能的格式化错误的规范Q请参阅 formatter c规范的详细信息 一节?
NullPointerException - 如果 format ?null
%[argument_index$][flags][width][.precision]conversion
*可选的 argument_index 是一个十q制整数Q用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用Q第二个参数?"2$" 引用Q依此类推?
*可?flags 是修改输出格式的字符集。有效标志集取决于{换类型?
*可?width 是一个非负十q制整数Q表明要向输Z写入的最字W数?
*可?precision 是一个非负十q制整数Q通常用来限制字符数。特定行为取决于转换cd?
*所需 conversion 是一个表明应该如何格式化参数的字W。给定参数的有效转换集取决于参数的数据类型?
2、用来表C日期和旉cd
%[argument_index$][flags][width]conversion
*可选的 argument_index、flags ?width 的定义同上?
*所需?conversion 是一个由两字W组成的序列。第一个字W是 't' ?'T'。第二个字符表明所使用的格式。这些字W类g但不完全{同于那些由 GNU date ?POSIX strftime(3c) 定义的字W?
3、与参数不对应的格式说明W的语法如下Q?
%[flags][width]conversion
可?flags ?width 的定义同上?
所需?conversion 是一个表明要在输Z所插内容的字符?/p>
二、语法中个元素对应的参数
1、标志(flags)
下表ȝ?jin)受支持的标志?em>y 表示该标志受指示参数cd支持?
标志 | 常规 | 字符 | 整数 | 点 | 日期/旉 | 说明 |
---|---|---|---|---|---|---|
'-' | y | y | y | y | y | l果是左对齐的? |
'#' | y1 | - | y3 | y | - | l果应该使用依赖于{换类型的替换形式 |
'+' | - | - | y4 | y | - | l果L包括一个符? |
' ' | - | - | y4 | y | - | 对于正|l果中将包括一个前导空? |
'0' | - | - | y | y | - | l果用零来填充 |
',' | - | - | y2 | y5 | - | l果包括特定于语言环境?a href="mk:@MSITStore:D:\1目\参考文档\JDK_API_1_6_zh_CN.CHM::/java/text/DecimalFormatSymbols.html#getGroupingSeparator()">l分隔符 |
'(' | - | - | y4 | y5 | - | l果是用圆括号括v来的负数 |
1 取决?Formattable
的定义?
2 只适用?'d' 转换?
3 只适用?'o'?tt>'x' ?'X' 转换?
4 ?BigInteger
应用 'd'?tt>'o'?tt>'x' ?'X' 转换Ӟ或者对 byte ?Byte
?tt>short ?Short
?tt>int ?Integer
?tt>long ?Long
分别应用 'd' 转换旉用?
5 只适用?'e'?tt>'E'?tt>'f'?tt>'g' ?'G' 转换?
M未显式定义ؓ(f)标志的字W都是非法字W,q且都被保留Q以供扩展用?
宽度是将向输Z写入的最字W数。对于行分隔W{换,不适用宽度Q如果提供宽度,则会(x)抛出异常?br />
3、精度(precisionQ?br />
对于常规参数cdQ精度是向输出中写入的最多字W数?
对于点转换 'e'?tt>'E' ?'f'Q精度是数点分隔符后的位数。如果{换是 'g' ?'G'Q那么精度是舍入计算后所得数值的所有位数。如果{换是 'a' ?'A'Q则不必指定_ֺ?
对于字符、整数和日期/旉参数cd转换Q以?qing)百分比和行分隔W{换,_ֺ是不适用的;如果提供_ֺQ则?x)抛出异常?/p>
4、{换(conversionQ?br />
下表ȝ?jin)受支持的{换。由大写字符Q如 'B'?tt>'H'?tt>'S'?tt>'C'?tt>'X'?tt>'E'?tt>'G'?tt>'A' ?'T'Q表C的转换与由相应的小写字W的转换{同Q根据流行的 Locale
规则结果{换ؓ(f)大写形式除外。后者等同于 String.toUpperCase()
的以下调?
out.toUpperCase()
转换 | 参数cd | 说明 |
---|---|---|
'b', 'B' | 常规 | 如果参数 arg ?nullQ则l果?"false"。如?arg 是一?boolean 值或 Boolean Q则l果?String.valueOf() q回的字W串。否则结果ؓ(f) "true"?
|
'h', 'H' | 常规 | 如果参数 arg ?nullQ则l果?"null"。否则,l果?Integer.toHexString(arg.hashCode()) 得到的结果? |
's', 'S' | 常规 | 如果参数 arg ?nullQ则l果?"null"。如?arg 实现 Formattable Q则调用 arg.formatTo 。否则,l果?arg.toString() 得到的结果?
|
'c', 'C' | 字符 | l果是一?Unicode 字符 |
'd' | 整数 | l果被格式化为十q制整数 |
'o' | 整数 | l果被格式化为八q制整数 |
'x', 'X' | 整数 | l果被格式化为十六进制整? |
'e', 'E' | 点 | l果被格式化为用计算机科学记数法表示的十q制? |
'f' | 点 | l果被格式化为十q制? |
'g', 'G' | 点 | Ҏ(gu)_ֺ和舍入运后的|使用计算机科学记数Ş式或十进制格式对l果q行格式化? |
'a', 'A' | 点 | l果被格式化为带有效位数和指数的十六q制点? |
't', 'T' | 日期/旉 | 日期和时间{换字W的前缀。请参阅日期/旉转换? |
'%' | 癑ֈ? | l果为字面?'%' ('\u0025') |
'n' | 行分隔符 | l果为特定于q_的行分隔W? |
M未明定义ؓ(f)转换的字W都是非法字W,q且都被保留Q以供将来扩展?br />
此外q有日期格式的{换,在此不列出?br />
Q以上来源于JDK1.6Q?/p>