常规类型、字符类型和数值类型的格式 | ||
%[argument_index$][flags][width][.precision]conversion | ||
日期和时间类型的格式 | ||
%[argument_index$][flags][width]conversion | ||
| ||
argument_index$ | 是一个十进制整数,用于表明要格式化第几个参数。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。 | |
flags | '-' | 结果将是左对齐的 |
'#' | 结果应该使用依赖于转换类型的替换形式(看例子比较好理解) | |
'+' | 结果总是包括一个符号 | |
'(' | 结果若是负值,则用()括起来 | |
'0' | 结果用0补充 | |
',' | 结果用逗号分隔(只使用十进制) | |
width | 是一个非负十进制整数,表明要向输出中写入的最少字符数,如果小于系统默认字符数,将不起效果 | |
.precision | 是一个非负十进制整数,表明要向输出中写入的最少字符数或者保留多少位小数 | |
conversion | 'c', 'C' | 结果是一个 Unicode 字符 'C' 返回结果是大写 |
'd' | 结果被格式化为十进制整数 | |
'o' | 结果被格式化为八进制整数 | |
'x', 'X' | 结果被格式化为十六进制整数 'X' 返回结果是大写 | |
'e', 'E' | 结果被格式化为用计算机科学记数法表示的十进制数 'E' 返回结果是大写 | |
'f' | 结果被格式化为浮点数 | |
'g', 'G' | 根据精度和舍入运算后的值, 使用计算机科学记数形式或十进制格式对结果进行格式化 | |
'a', 'A' | 结果被格式化为带有效位数和指数的十六进制浮点数 | |
't', 'T' | 日期和时间转换字符的前缀。请参阅日期/时间转换。'T' 返回结果是大写 | |
'%' | 输出%,其它什么都没有 | |
'n' | 结果为特定于平台的行分隔符 | |
'H' | 24 小时制的小时,被格式化为带前导零的两位数 | |
'I' | 12 小时制的小时,被格式化为带前导零的两位数 | |
'k' | 24 小时制的小时 | |
'l' | 12 小时制的小时 | |
'M' | 小时中的分钟,被格式化为必要时带前导零的两位数 | |
'S' | 分钟中的秒,被格式化为必要时带前导零的两位数 | |
'L' | 秒中的毫秒,被格式化为必要时带前导零的三位数 | |
举例 | ||
public class StringFormat { public static void main(String[] args) { double d = 1345.678; String s = "你好!"; int i = 1234; // "%"表示进行格式化输出,"%"之后的内容为格式的定义。 System.out.printf("%f", 1345.678); //"f"表示格式化输出浮点数。1345.678-->1345.678000
System.out.printf("%9f", 1345.678); //1345.678-->1345.678000,系统默认为11个字符数,定义9个没有效果
System.out.printf("%12f", 1345.678); //1345.678-->*1345.678000,注意1前面有一个空字符,为可观看暂用”*”代替
System.out.printf("%12.2f", 1345.678); //2表示小数点后的位数 1345.678-->*****1345.68
System.out.printf("%+9.2f", 1345.678); //"+"表示输出的数带正负号 1345.678-->*+1345.68
System.out.printf("%-9.4f", 1345.678); //"-"表示输出的数左对齐(默认为右对齐)1345.678-->1345.6780
System.out.printf("%+-9.3f", 1345.678); //"+-"表示输出的数带正负号且左对齐。
System.out.printf("%5d", 1234); //"d"表示输出十进制整数 1234-->*1234
System.out.printf("%o", 1234); //"o"表示输出八进制整数 1234-->2322
System.out.printf("%x", 1234); //"x"表示输出十六进制整数 1234-->4d2
System.out.printf("%#x", 1234); //1234-->0x4d2,加上#前面就加上0x
System.out.printf("%s", "你好!"); //"s"表示输出字符串 你好!-->你好!
System.out.printf("输出一个浮点数:%1$f,一个整数:%2$d,一个字符串:%3$s", 1234.567, 1234, "你好!"); // 可以输出多个变量,注意顺序。
System.out.println(String.format("%2$08d", -3123, -5566)); // -5566-->-00005566
System.out.println(String.format("%1$9d", -31)); // -31-->******-31
System.out.println(String.format("%1$(9d", -31)); // -31-->*****(31)
Calendar cal = Calendar.getInstance(); System.out.printf("%1$tm-%1$te-%1$tY", cal); // cal-->11-21-2010,记得要加上’t’
System.out.printf("%1$tH:%1$tM:%1$tS",cal); // cal-->16:01:57,记得要加上’t’ |