格式化输出局势指某种格式输出。C语言中的printf()函数就是提供这样的功能,当然这要与占位符配合使用。
1.格式化说明符以及类型换换字符
格式化说明符就是描述占位符的格式化,用以控制将要填充在此处的数据的格式。
抽象语法:%[argument_index$][flags][width][.precision]conversion
conversion就是指类型转换字符
argument_index用来指定该占位符对应着后面第几个参数,默认是按照顺序的插入的。
flags用来对输出进行标志控制,取决于conversion。
width用来控制最小尺寸。可应用于各种类型的数据转换,并且行为方式都一样。
precision用来指明最大尺寸,不是所有类型数据都能使用precision,并且应用于不同类型的数据转换时,prcision的意义也不同。在将precision用于String时,表示打印String输出字符的最大数量;在将precision用于浮点数时,表示小数部分显示出来的位数(默认6位),如果小数位过多则舍入,过少则补0.
[]中的都是可选的,而conversion是必须的。
常用的类型转换字符有:
d
整数型(十进制)
e
浮点数(科学计数)
c
Unicode字符
x
整数(十六进制)
b
Boolean值
h
散列码(十六进制)
s
String
%
字符“%”
f
浮点数(十六进制)
2.格式化输出方法
Javs SE 5之后,推出了C语言中的printf方法;同时引入了format方法可用于PrintStream或PrintWriter对象。format和printf方法是等价的。
int x = 5;
double y = 5.12344567;
System.out.printf("Row 1:[%d %.9f]\n", x, y);
System.out.format("Row 1:[%d %.9f]\n", x, y);
Output:
Row 1:[5 5.123445670]
Row 1:[5 5.123445670]
另外,String类也提供一个静态的format方法。
System.out.println(String.format("Row 1:[%d %.9f]\n", x, y));
输出同样与上面相同。
3.Formatter类
在Java中,所有新的格式化功能都有java.util.Formatter类处理。可将Formatter看做一个翻译器,将你的格式化字符串与数据翻译成需要的结果。当你创建一个Formatter对象的时候,需要向其构造器传递一些信息,告诉它最终的结果将向哪里输出。
Formatter formatter = new Formatter(System.out);
formatter.format("Row 1:[%d %.9f]\n", x, y);
输出与上面的相同。4.总结
1)记住格式化说明符的形式,以及一些特殊的地方,比如说precision的用法。记住常用的类型转换字符。
2)printf和format方法用于格式化输出,用于PrintStream和PrintWrter对象;另外String.format()同样可以用于输出。
3)Formatter类用于处理格式化,需要向其传递一个输出流的对象,用于指定输出将输出到哪里。