从JDK 1.5版本以后,java.io.PrintWriter类中有以下格式化输出方法:
PrintWriter format(Locale l, String format, Object… args)
PrintWriter format(String format, Object… args)
PrintWriter printf(Locale l, String format, Object… args)
PrintWriter printf(String format, Object… args)
以下是JDK文档的说明:
使用指定格式字符串和参数将一个格式化字符串写入此 writer 中。如果启用自动刷新,则调用此方法将刷新输出缓冲区。
【参数】:
l – 格式化过程中应用的 locale。如果 l 为 null,则不应用本地化。
format – 在格式字符串的语法中描述的格式字符串。
args – 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到 Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion。
【注】:format(String format, Object… args) 与printf(String format, Object… args)始终使用的语言环境是由 Locale.getDefault() 返回的语言环境,不管以前在此对象上调用了其他什么样的格式化方法。
【抛出】:
IllegalFormatException – 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。
NullPointerException – 如果 format 为 null
以上四个方法中两对相应的调用方法和效果完全相同。
字符串:
%s表示输出字符串;
%S将字符串以大写形式输出;
boolean类型:
%b输出boolean类型,false和null的值为false,其余好像都是true(包括数字0和字符串“false”);
%B输出大写的boolean类型TRUE和FALSE。
整数类型:
%d表示将整数格式化为10进制整数,%-d输出带符号位的10进制数;
%o表示将整数格式化为8进制整数;
%x表示将整数格式化为16进制整数;
%X表示将整数格式化为16进制整数,并且字母变成大写形式;
【注意】以上只有%-d的带符号格式,没有%+d、%+o、%-o等形式,只可转换整数类型(Integer:byte, short, int, long)。
浮点类型:
%f表示以十进制格式化输出浮点数
%.3f表示以十进制格式化输出浮点数,不足末尾补0;
%e表示以科学技术法输出浮点数
%E表示以科学技术法输出浮点数,并且为大写形式,如-1.5E+03;
【注意】以上都有形如%+f的形式输出带符号的浮点数值,但是没有%-f的类型,只可转换浮点类型(Floating:float,double)。
日期类型:
%t或%T之后用c(%tc)表示输出时间日期的完整信息;
%t或%T之后用y(%ty)表示输出日期的年份(2位数的年,如12);
%t或%T之后用Y(%tY)表示输出日期的年份(4位数的年,如2012);
%t或%T之后用m(%tm)表示输出日期的月份;
%t或%T之后用M(%tM)表示输出日期的分钟;
%t或%T之后用d(%td)表示输出日期的日号;
%t或%T之后用H表示输出时间的时(24进制);
%t或%T之后用I表示输出时间的时(12进制);
%t或%T之后用M表示输出时间的分;
%t或%T之后用S表示输出时间的秒;
%t或%T之后用L表示输出时间的秒中的毫秒;
%t或%T之后p表示输出时间的上午或下午信息;
%t或%T之后用A表示得到星期几的全称;
%t或%T之后用a表示得到星期几的简称;
%t或%T之后用D表示以 “%tm/%td/%ty”格式化日期;
%t或%T之后用F表示以”%tY-%tm-%td”格式化日期;
%t或%T之后用R表示以”%tH:%tM”格式化时间;
%t或%T之后用T表示以”%tH:%tM:%tS”格式化时间;
%t或%T之后用r表示以”%tI:%tM:%tS %Tp”格式化时间;
【注意】以上不可添加符号位(+、-)。
换行:
%n表示换行。
指定长度值输出:
在格式中间添加数字指定值的输出长度,长用于对齐输出。如 s表示输出长度为20的字符串,不足在前面补空格,%-20d表示输出长度为20的整形数字,不足在后面补空格,没有%+20d的格式。
指定第几个参数:
多个参数时,可以在格式中间插入变量编号,如%1$s表示第一个字符串,%3$s表示第3个字符串。
PrintWriter format(Locale l, String format, Object… args)
PrintWriter format(String format, Object… args)
PrintWriter printf(Locale l, String format, Object… args)
PrintWriter printf(String format, Object… args)
以下是JDK文档的说明:
使用指定格式字符串和参数将一个格式化字符串写入此 writer 中。如果启用自动刷新,则调用此方法将刷新输出缓冲区。
【参数】:
l – 格式化过程中应用的 locale。如果 l 为 null,则不应用本地化。
format – 在格式字符串的语法中描述的格式字符串。
args – 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到 Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion。
【注】:format(String format, Object… args) 与printf(String format, Object… args)始终使用的语言环境是由 Locale.getDefault() 返回的语言环境,不管以前在此对象上调用了其他什么样的格式化方法。
【抛出】:
IllegalFormatException – 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。
NullPointerException – 如果 format 为 null
以上四个方法中两对相应的调用方法和效果完全相同。
字符串:
%s表示输出字符串;
%S将字符串以大写形式输出;
boolean类型:
%b输出boolean类型,false和null的值为false,其余好像都是true(包括数字0和字符串“false”);
%B输出大写的boolean类型TRUE和FALSE。
整数类型:
%d表示将整数格式化为10进制整数,%-d输出带符号位的10进制数;
%o表示将整数格式化为8进制整数;
%x表示将整数格式化为16进制整数;
%X表示将整数格式化为16进制整数,并且字母变成大写形式;
【注意】以上只有%-d的带符号格式,没有%+d、%+o、%-o等形式,只可转换整数类型(Integer:byte, short, int, long)。
浮点类型:
%f表示以十进制格式化输出浮点数
%.3f表示以十进制格式化输出浮点数,不足末尾补0;
%e表示以科学技术法输出浮点数
%E表示以科学技术法输出浮点数,并且为大写形式,如-1.5E+03;
【注意】以上都有形如%+f的形式输出带符号的浮点数值,但是没有%-f的类型,只可转换浮点类型(Floating:float,double)。
日期类型:
%t或%T之后用c(%tc)表示输出时间日期的完整信息;
%t或%T之后用y(%ty)表示输出日期的年份(2位数的年,如12);
%t或%T之后用Y(%tY)表示输出日期的年份(4位数的年,如2012);
%t或%T之后用m(%tm)表示输出日期的月份;
%t或%T之后用M(%tM)表示输出日期的分钟;
%t或%T之后用d(%td)表示输出日期的日号;
%t或%T之后用H表示输出时间的时(24进制);
%t或%T之后用I表示输出时间的时(12进制);
%t或%T之后用M表示输出时间的分;
%t或%T之后用S表示输出时间的秒;
%t或%T之后用L表示输出时间的秒中的毫秒;
%t或%T之后p表示输出时间的上午或下午信息;
%t或%T之后用A表示得到星期几的全称;
%t或%T之后用a表示得到星期几的简称;
%t或%T之后用D表示以 “%tm/%td/%ty”格式化日期;
%t或%T之后用F表示以”%tY-%tm-%td”格式化日期;
%t或%T之后用R表示以”%tH:%tM”格式化时间;
%t或%T之后用T表示以”%tH:%tM:%tS”格式化时间;
%t或%T之后用r表示以”%tI:%tM:%tS %Tp”格式化时间;
【注意】以上不可添加符号位(+、-)。
换行:
%n表示换行。
指定长度值输出:
在格式中间添加数字指定值的输出长度,长用于对齐输出。如 s表示输出长度为20的字符串,不足在前面补空格,%-20d表示输出长度为20的整形数字,不足在后面补空格,没有%+20d的格式。
指定第几个参数:
多个参数时,可以在格式中间插入变量编号,如%1$s表示第一个字符串,%3$s表示第3个字符串。