String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。

显示不同转换符实现不同数据类型到字符串的转换,如图所示:

public static void main(String[] args) {
        String str = null;
        str = String.format("Hi,%s", "王力");
        System.out.println(str);
        str = String.format("Hi,%s:%s.%s", "王南", "王力", "小王");
        System.out.println(str);
        System.out.printf("字母a的大写是:%c %n", 'A');
        System.out.printf("3>7的结果是:%b %n", 3 > 7);
        System.out.printf("100的一半是:%d %n", 100 / 2);
        System.out.printf("100的16进制数是:%x %n", 100);
        System.out.printf("100的8进制数是:%o %n", 100);
        System.out.printf("50元的书打8.5折扣是:%f 元%n", 50 * 0.85);
        System.out.printf("上面价格的16进制数是:%a %n", 50 * 0.85);
        System.out.printf("上面价格的指数表示:%e %n", 50 * 0.85);
        System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n", 50 * 0.85);
        System.out.printf("上面的折扣是%d%% %n", 85);
        System.out.printf("字母A的散列码是:%h %n", 'A');
}

输出结果:

Hi,王力
Hi,王南:王力.小王
字母a的大写是:A
3>7的结果是:false
100的一半是:50
100的16进制数是:64
100的8进制数是:144
50元的书打8.5折扣是:42.500000 元
上面价格的16进制数是:0x1.54p5
上面价格的指数表示:4.250000e+01
上面价格的指数和浮点数结果的长度较短的是:42.5000
上面的折扣是85%
字母A的散列码是:41

搭配转换符的标志

public static void main(String[] args) {
        String str = null;
        //$使用
        str = String.format("格式参数$的使用:%1$d,%2$s", 99, "abc");
        System.out.println(str);
        //+使用
        System.out.printf("显示正负数的符号:%+d与%d%n", 99, -99);
        //O使用
        System.out.printf("最牛的编号是:%03d%n", 7);
        //空格使用
        System.out.printf("Tab键的效果是:% 8d%n", 7);
        //.使用
        System.out.printf("整数分组的效果是:%,d%n", 9989997);
        //空格和小数点后面个数
        System.out.printf("一本书的价格是:% 50.5f元%n", 49.8);
}

输出结果:

格式参数$的使用:99,abc
显示正负数的符号:+99与-99
最牛的编号是:007
Tab键的效果是: 7
整数分组的效果是:9,989,997
一本书的价格是: 49.80000元

日期和事件字符串格式化.

在程序界面中经常需要显示时间和日期,但是其显示的 格式经常不尽人意,需要编写大量的代码经过各种算法纔得到理想的日期与时间格式。 字符串格式中还有%tx转换符没有详细介绍,它是专门用来格式化日期和时 间的。 %tx转换符中的x代表另外的处理日期和时间格式的转换符,它们的组合能够将日期和时间格式化成多种格式。

public static void main(String[] args) {
        Date date = new Date();
        // c的使用
        System.out.printf("日期和时间信息:%tc%n", date);
        // F的使用
        System.out.printf("年-月-日格式:%tF%n", date);
        // r的使用
        System.out.printf("HH:MM:SS (12小时制):%tr%n", date);
        // T的使用
        System.out.printf("HH:MM:SS (24小时制):%tT%n", date);
        // R的使用
        System.out.printf("HH:MM (24小时制):%tR", date);
}

输出结果:

日期和时间信息:星期二 十二月 31 14:30:47 CST 2019
年-月-日格式:2019-12-31
HH:MM:SS (12小时制):02:30:47 下午
HH:MM:SS (24小时制):14:30:47
HH:MM (24小时制):14:30