Java 基础教程

格式化输出

在前面章节我们使用 System.out.println() 方法将信息输出到控制台。该方法输出信息后,会自动添加一个回车换行符。与之对应的方法 System.out.print() 方法输出的数据不会自动添加回车换行符。

遗憾的是,这两个方法不能精确地控制数据的输出效果,即所谓的数据格式化功能。但是,从 JDK1.5 开始,引入了一个新的方法 System.out.printf(),该方法提供了增强的格式化输出功能。使用格式如下:

System.out.printf("输出格式", 输出数据列表);

例如:

public class Demo {

    public static void main(String[] args) {
        double salary = 15000.2567f;
        // 格式化输出结果,保留两位小数点
        System.out.printf("salary=%6.2f\n", salary);
    }

}

运行实例,输出结果如下:

salary=15000.26

其中,“输出格式”部分是一个字符串,可以包含字符串常量和一至多个格式说明符。格式说明符用于指定单个数据的输出格式,必须以“%”开头,后跟格式化输出的控制标记以及规定的输出宽度和精度等。格式说明符的基本语法如下:

%[<参数索引>$][<控制标记>][<宽度>][.<精度>]<转换符>

其中:

  • 参数索引:指要格式化的参数序号,是可选的。

  • 控制标记:指定打印正/负数的符号、数字前补0等等

  • 宽度:指定整个输出数据的宽度,包含精度。例如:%10.2f,格式化 15000.2567f 数据结果为“  15000.26”

  • 精度:指定保留几位小数

  • 转换符:标记格式说明的结尾且指定将被格式化数据的类型。

常用转换符

  • a:十六进制浮点数,例如:0x1.0p2

  • b:布尔类型,例如:true

  • c:字符型,例如:'H'

  • d:十进制整数,例如:250

  • e:指数形式浮点数,例如:3.14e-2

  • f:指定浮点数,例如:3.14

  • %:百分号,转义作用,例如:%

  • x:格式化为十六进制,例如:1ed0

常用控制标记

  • +:打印正/负数的符号,例如:+3.140

  • -:输出数据左对齐(默认为右对齐),例如:3.14

  • 0:在数字前补0,例如:0003.140

  • (:将负数括在括号内,例如:(3.140)

  • ,:进行数据分组分隔,例如:24.335.85

  • #:对八进制/十六进制整数加前缀(0或0x),例如:0x4a3b

  • $:指定要给格式化的参数下标

  • <:指定(重复)格式化输出前面的数据

其中,$ 标记用于显示指定要格式化的数据序号。例如:

public class Demo {

    public static void main(String[] args) {
        System.out.printf("你好:%1$s!\n姓名:%1$s,年龄:%2$d\n", "Tom", 28);
    }

}

运行示例,输出结果如下:

你好:Tom!
姓名:Tom,年龄:28

上面示例中,1$ 表示参数一 Tom,2$ 表示参数而 28。

而 < 标记用于指定对前面的数据再次格式化输出,例如:

public class Demo {

    public static void main(String[] args) {
        System.out.printf("十进制:%3d, 十六进制:%#<x", 78);
    }

}

运行示例,输出结果如下:

十进制: 78, 十六进制:0x4e
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号