Java格式化输出的四种方法及控制符说明

一、System.out.printf()

Java SE5推出了C语言printf()风格的格式化输出功能。

String str=”Java”;

double pi=3.14;

int i=100;

//”%”表示进行格式化输出,其后是格式的定义

System.out.printf(“%f\n”,pi);//”f”表示格式化输出浮点数

System.out.printf(“%d\n”,i);//”d”表示格式化输出十进制整数

System.out.printf(“%o\n”,i);//”o”表示格式化输出八进制整数

System.out.printf(“%x\n”,i);//”x”表示格式化输出十六进制整数

System.out.printf(“%s\n”,str);//”s”表示格式化输出字符串

System.out.printf(“一个字符串:%s,一个浮点数:%f,一个整数:%d”,str,pi,i);//可以一次输出多个变量,注意顺序即可

二、System.out.format()

Java SE5引入的format()方法模仿C的printf()方法,可用于PrintStream或者PrintWriter对象,包括System.out对象。用法基本上和System.out.printf()类似。

String str=”Java”;

double pi=3.14;

int i=100;

//”%”表示进行格式化输出,其后是格式的定义

System.out.format(“%f\n”,pi);//”f”表示格式化输出浮点数

System.out.format(“%d\n”,i);//”d”表示格式化输出十进制整数

System.out.format(“%o\n”,i);//”o”表示格式化输出八进制整数

System.out.format(“%x\n”,i);//”x”表示格式化输出十六进制整数

System.out.format(“%s\n”,str);//”s”表示格式化输出字符串

System.out.format(“一个字符串:%s,一个浮点数:%f,一个整数:%d”,str,pi,i);//可以一次输出多个变量,注意顺序即可

三、Fomatter类

Java中所有的格式化功能都由java.util.Formatter类处理。当你创建一个Formatter对象时 ,需要向其构造器传递一些信息,告诉它最终的结果将向哪里输出。

import java.util.Formatter;//使用Formatter类时需要导入java.util.Formatter

Formatter f=new Formatter(System.out);//创建一个Formatter对象,指定输出为System.out

String str=”Java”;

double pi=3.14;

int i=100;

//”%”表示进行格式化输出,其后是格式的定义

f.format(“%f\n”,pi);//”f”表示格式化输出浮点数

f.format(“%d\n”,i);//”d”表示格式化输出十进制整数

f.format(“%o\n”,i);//”o”表示格式化输出八进制整数

f.format(“%x\n”,i);//”x”表示格式化输出十六进制整数

f.format(“%s\n”,str);//”s”表示格式化输出字符串

f.format(“一个字符串:%s,一个浮点数:%f,一个整数:%d”,str,pi,i);//可以一次输出多个变量,注意顺序即可

四、String.format()

String.format()是一个static方法,接收与Formatter.format()一样的参数,其返回值:String对象,适用于一次输出。

String str=”Java”;

double pi=3.14;

int i=100;

//”%”表示进行格式化输出,其后是格式的定义

System.out.println(String.format(“%f”,pi));//”f”表示格式化输出浮点数

System.out.println(String.format(“%d”,i));//”d”表示格式化输出十进制整数

System.out.println(String.format(“%o”,i));//”o”表示格式化输出八进制整数

System.out.println(String.format(“%x”,i));//”x”表示格式化输出十六进制整数

System.out.println(String.format(“%s”,str));//”s”表示格式化输出字符串

五、格式化控制符,参数的语法如下:

%[argument_index$][flags][width][.precision]conversion

(1)格式说明符以%符号开头,用相应的参数替换。(%符号可根据\理解,要想输出%符号,格式需要写成这样%%)

(2)argument_index,参数索引,是一个十进制整数,顾名思义,表示后面参数的位置,例如上面的1$表示第1个参数。

(3)flags,控制标志;是用于控制输出格式,但具体怎么控制还要看末尾的转换符(conversion,d,f等)。

对于d,f

+:打印+-号,

空格(或没有):在正数前添加空格

0:数字前面补充0;

-:左对齐

(:将数字括在括号内

,:添加千分位分组分隔符

#(对于f格式):包含小数位

#(对于X或0格式):添加前缀0X或0,16进制,8进制

$:给定被格式化的参数索引%1$d,表示对第一个参数格式化

(4)width,字符宽度;是一个正整数,表明要输出字符的长度。

(5).precision, 精度控制,用于控制保留小数的位数;(“%7.3f”,0.1235);输出结果:0.124 (还有俩个空格,“.”也占一个长度)

(6) conversion,转化符号,设置 输出的类型,d,十进制整数,o,八进制整数;x,小写16进制整数;X,大写十六进制整数;f,浮点数;s,字符串。