JAVA && Spring && SpringBoot2.x — 学习目录
本文目录:
- 十进制数字格式化——DecimalFormat
- 数字格式化基类——NumberFormat
- 字符串格式化类——String.format()
- Linux输出格式化——printf
1. 十进制数字格式化(DecimalFormat)
decimal是对数字进行格式化,比如取2位小数,这是最常见的。Java提供了DecimalFormat类,可以快速的将数字格式化为需要的样子。
DecimalFormat类主要靠#和0两种占位符来指定数字长度。
- 0表示如果位数不足,则以0填充,若是位数足够,则正常显示位数;
- #表示如果位数不足,则该位不显示。
源代码测试
2. NumberFormat数字格式化
NumberFormat是所有数字格式的抽象基类。该类提供格式化和解析数字的接口。而DecimalFormat是NumberFormat的直接子类。
3. String格式化
开发的时候,一段字符串的中间某一部分是需要可变的。我们就需要用到了String.format来填充内容。
3.1 需要的API(String.format)
- String.format()字符串常规类型格式化的两种重载方式
- format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
- format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
3.2 format的格式类型
转换符 | 详细说明 | 示例 |
---|---|---|
%s | 字符串类型 | "小胖学编程" |
%c | 字符类型 | 'm' |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 88 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 8.888 |
%a | 十六进制浮点类型 | FF.35AE |
%% | 百分比类型 | %(%特殊字符%%才能显示%) |
2.3 源码及测试结果
3.4 String.format的高级功能
标志 | 详细说明 | 示例 | 结果 |
---|---|---|---|
+ | 为正数添加符号 | ("%+d",15) | +15 |
0 | 数字前面补0(加密常用) | ("%04d",99) | 0099 |
空格 | 整数之前添加空格 | ("% 4d", 99) | 99 |
, | 以“,”对数字分组(常用显示金额) | (“%,f”, 9999.99) | 9,999.990000 |
( | 使用括号包含负数 | (“%(f”, -99.99) | (99.990000) |
3.5 源码及测试结果
4. Linux的输出格式化命令-printf
printf命令的语法:
printf "指定的格式" "文本1" "文本2" "文本3"
;
正如下图,每一个“文本”都会被当做参数传递到printf命令,而每一个传入的参数都会按照指定的"格式"被"格式化"。
%s
是格式替换符,代替每一个传入的参数。所以我们指定的格式变成了abc\n def\n sss\n aaa\n
。
我们可以根据传入的参数不同,使用不同的“格式替换符”去替换
格式替换符 | 详细说明 |
---|---|
%s | 字符串类型 |
%f | 浮点类型(也就是float或double) |
%b | 相对应的参数包含了转义字符,使用该替换符时对应的转义字符会被转义 |
%c | ASCII字符,显示相对应参数的第一个字符 |
%d,%i | 显示对应参数的第一个字符 |
%o | 不带正负号的八进制值 |
%u | 不带正负号的十进制值 |
%x | 不带正负号的十六进制值,使用a-f表示10-15 |
%X | 不带正负号的十六进制值,使用A-F表示10-15 |
%% | 表示"%"本身 |
对应的转义字符:
转义字符 | 详细说明 |
---|---|
\a | 警告字符,通常为ASCII的BEL字符 |
\b | 后退 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ | 字面意义上的反斜杠字符,即\本身 |
例子:(1)为传入的每个参数添加一对“括号”
[root@XXXXXX etc]$ printf "{%s}" abc def;echo ""
{abc}{def}
多格式替换符
我们所指定的“格式”中所包含的“格式替换符”的数量,就代表每次格式化参数的数量。上图中,指定的“格式”中包含两个“格式替换符”,那么每次printf进行“格式化”操作时,就传入两个参数。
输出格式的宽度
在"格式替换符"中间加上特定的数字。比如"%10s"中间的10表示当前替换符对应的输出宽度为10个字符宽,如果输出不足10个字符,则用空格补全。而这些数字我们称为“修饰符”,即对替换符进行修饰。
如何进行左对齐?只要在原来的修饰符前面加上"-","-"表示左对齐,默认不加"-"表示右对齐。
[root@XXXXXX etc]$ printf "{%10s}" abc def;echo ""
{ abc}{ def}
[root@XXXXXX etc]$ printf "{%-10s}" abc def;echo ""
{abc }{def }
还有一种修饰符"+"
注意:"+"可不是代表右对齐,不加修饰符"-"时,默认是右对齐,那么"+"修饰符什么意思呢?
当替换符对应的参数为数字时,可以使用+修饰符是为了给正数添加+号。
(敲黑板,划重点)到现在为止,我们接触了3个修饰符了。需要注意的是:(1)数字:输出当前替换符对应的输出宽度,默认右对齐;(2)-:修改对齐方式为左对齐;(3)+:为正数添加+符号;
数字修饰符的特殊用法
[root@XXXXXX etc]$ printf "%-12.3f\n" 19
19.000
[root@XXXXXX etc]$ printf "%-12.3d\n" 19
019
[root@XXXXXX etc]$ printf "%-0.3f\n" 19.1230
19.123
[root@XXXXXX etc]$ printf "%-0.3s\n" 19.1230
19.
修饰符作为正数我们知道,就是输出的宽度;
但是作为小数时:
- 当替换符为%f时,如果数字修饰符带有小数,则数字修饰符小数点后的数字表示对应的小数精度;
- 当替换符为%d时,如果数字修饰符带有小数,则数字修饰符后的小数表示整数的长度,长度不够时,高位用0补全;
- 当替换符为%s时,如果数字修饰符带有小数,则是截取字符串的长度;
参考文章: