常规类型的格式化
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。
format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
显示不同转换符实现不同数据类型到字符串的转换,如图所示。
转 换 符 | 说明 | 示 例 |
---|---|---|
%s | 字符串类型 | “mingrisoft” |
%c | 字符类型 | ‘m’ |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 99 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 99.99 |
%a | 十六进制浮点类型 | FF.35AE |
%e | 指数类型 | 9.38e+5 |
%g | 通用浮点类型(f和e类型中较短的) | |
%h | 散列码 | |
%% | 百分比类型 | % |
%n | 换行符 | |
%tx | 日期与时间类型(x代表不同的日期与时间转换符 |
使用示例:
String str=null;
str=String.format("Hi,%s", "王力"); // Hi,王力
str=String.format("Hi,%s:%s.%s", "王南","王力","王张"); //Hi,王南,王力,王张
System.out.printf("字母a的大写是:%c %n", 'A'); //字母a的大写是A ,注意A后面有一个换行符
System.out.printf("3>7的结果是:%b %n", 3>7); // 3>7的结果是:false
System.out.printf("100的一半是:%d %n", 100/2); //100的一半是:50
System.out.printf("100的16进制数是:%x %n", 100); //100的16进制数是:64
System.out.printf("100的8进制数是:%o %n", 100); // 100的8进制数是:144
System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85); //425.000000
System.out.printf("上面价格的16进制数是:%a %n", 50*0.85); //0x1.54p5
System.out.printf("上面价格的指数表示:%e %n", 50*0.85);//4.250000e+01
System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n", 50*0.85); //42.5000
System.out.printf("上面的折扣是%d%% %n", 85); //%85
System.out.printf("字母A的散列码是:%h %n", 'A'); //41
我们在使用的时候其实都会 搭配一些修饰符来达到我们想要的效果
标志 | 说明 | 示例 | 结果 |
---|---|---|---|
+ | 为正数或者负数添加符号 | String.format(“%+d”,15) | +15 |
- | 左对齐 | String.format(“%-5d”,15) | 15 |
0 | 数字前补0 | String.format(“%05d”,15) | 00015 |
空格 | 在整数之前添加空格 | String.format(“% 5d”,15) | 15 |
, | 用逗号对数字分组 | String.format(“%,f”,99999889) | |
( | 使用括号包含负数 | (“%(f”, -99.99) | (99.990000) |
< | 格式化前一个转换符所描述的参数 | (“%f和%<3.2f”, 99.45) | 99.450000和99.45 |
$ | 被格式化的参数索引 | (“%1 d, s”, 99,”abc”) | 99,abc |
引用的是这篇博文这里