Java5 中引入了和C语言的printf函数风格类似的format方法和printf方法,这两个方法可用于Java.io.PrintStream和java.io.PrintWriter对象,System.out对象的类型是PrintStream,于是对应C语言的printf函数的java版本就有了。
在api帮助文档中可以看到Java.io下面的printStream是由format方法滴
然后还有一个printf方法,在System这个类中定义了一个静态的常量,它的类型就是printStream
所以可以利用System.out.printf或者format方法
public static void main(String[] args) {
String name = "Tom";
int age = 15;
float height = 178.66666666f;
System.out.printf("姓名:%s ,年龄:%d , 年龄:%x , 身高%f", name, age, age, height);
}
双引号括起来的字符串就是格式化字符串。类似于%s,%f是占位符,称为格式说明符。
格式说明符的作用:1.说明了插入数据的位置 2.说明了插入的是什么类型的数据,以及如何对其格式化。
格式说明符的语法(格式说明符中括号中的东西都是可选的)
%[argument_index$][flags][width][.precision]conversion
具体解释:(1).argument_index是参数的索引,需要以一个美元符号$结尾,就是指定是哪个变量
输出结果:
(2).flags是一组修改输出格式的字符
(3).width是一个正十进制整数,表示要写入输出的最小字符数
(4).precision代表精度,通常用于限制字符数。精度在【.】后面给出
(5).conversion是格式说明字符
常用的格式控制字符:
%d --------十进制整数
%f ---------浮点数
%.2f----------浮点数,有精确的 .2是精确到百分位 .3是千分位以此类推
%16.3f--------浮点数,精确的千分位,宽度为16
%o--------输出八进制整数
%x-----------输出十六进制整数
%s------------输出字符串
%2$s------------表示第二个变量
%g-----------十进制数可能采用科学计数法
%n------------换行和\n的作用一样
还可以使用format方法,可以在api中看一下
可以看到它是一个静态方法,可以直接调用
调用方式:将字符串格式化之后返回String对象,然后可以直接输出
代码:
String name = "Tom";
int age = 15;
float height = 178.66666666f;
/*System.out.printf("姓名:%s ,年龄:%d , 年龄:%x , 身高%f%n", name, age, age, height);
System.out.printf("姓名:%2$s,年龄:%1$d%n",age,name);*/
String str=String.format("姓名:%s ,年龄:%d , 年龄:%x , 身高%.2f", name, age, age, height);
System.out.println(str);
运行结果: