Java的格式化输出
一个方法要进行格式化输出时,需要一个格式字符串(format string)和一个参数列表(arguments)。格式字符串可能包括确定的文本(fixed text)和一个或多个格式说明符(format specifier)。看下面例子:
String s=String.format("Duke‘s Name: %s", name);//format(String format,object arguments)
这是Java的String类的格式化方法,在这个方法中,"Duke‘s Name: %s"是这个方法的第一个参数,也就是格式字符串(format string),其中(%s)是格式说明符,除了这个以外剩下的部分就是确定的文本。name就是参数列表(arguments)。
•对于一般情况下来说,格式说明符的语法如下:
%[argument_index$][flags][width][.precision]conversion
•格式说明符以%符号开头,用相应的参数替换。(%符号可根据\理解,要想输出%符号,格式需要写成这样%%)
•argument_index是一个十进制整数,顾名思义,表示后面参数的位置,例如上面的1$表示name。
•flags是用于控制输出格式,但具体怎么控制还要看末尾的转换符(conversion)。
•width是一个正整数,表明要输出字符的长度。
转换符
标志
•代码:
public class formatDemo { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Hello World"); double x=-10000.0/3.0; double y=5000.0/3.0; System.out.println(x); System.out.printf("%,10.2f\r\n",x); System.out.printf("%-,10.2f\r\n",x); System.out.printf("%+(,10.2f %2$.3f\r\n",x,y); System.out.printf("%+(,10.2f %1$.3f %2$.3f %<f %<.3f\r\n",x,y); } } |
•结果:
•日期格式转换:
日期的格式说明符特点是说明符中的conversion是由t开始,加上下表任意字符结束。
|
|
时间是用距离一个固定的时间点的毫秒数(可正可负)表示的,这个点就是所谓的纪元(epoch),它是UTC时间1970年1月1日00:00:00.UTC是 Coordinated Universal Time的缩写,与GMT(Greenwich Mean Time/格林威治时间)一样。Java将保存时间和给时间点命名分开。Date类是用来表示时间点;另一个是日立表示法Calendar类。
摘自《Java核心技术卷I》