String.format正常输出%

有时候使用String.format格式化数据希望得到如下结果:

String str = String.format("下载完成%s%", "50.25");
System.out.printf(str);

这样干的结果竟然是报错啦

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '%'
    at java.util.Formatter.checkText(Formatter.java:2547)
    at java.util.Formatter.parse(Formatter.java:2533)
    at java.util.Formatter.format(Formatter.java:2469)

其实原因很简单,%在此处是特殊字符,需要转义的,改成如下写法就OK了。

String str = String.format("下载完成%s%%", "50.25");
System.out.printf(str);

当然这只是其中一种解决办法而已,我们还可以通过其他技巧来处理。比如

String str = String.format("下载完成%1$s%2$s", "50.35", "%");
System.out.println(str);

顺便整理一下转换符实现不同数据类型到字符串,方便查阅

转换符 说明 示例
%s 字符串类型 github
%c 字符类型 c
%b 布尔类型 true
%d 整数类型(十进制) 1024
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 99.66
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的) ---
%h 散列码 ---
%% 百分比类型 ---
%n 换行符 ---
%tx 日期与时间类型(x代表不同的日期与时间转换符) ---

你可能感兴趣的:(String.format正常输出%)