本文目录:

十进制数字格式化——DecimalFormat

数字格式化基类——NumberFormat

字符串格式化类——String.format()

Linux输出格式化——printf

1. 十进制数字格式化(DecimalFormat)

decimal是对数字进行格式化,比如取2位小数,这是最常见的。Java提供了DecimalFormat类,可以快速的将数字格式化为需要的样子。

DecimalFormat类主要靠#和0两种占位符来指定数字长度。

0表示如果位数不足,则以0填充,若是位数足够,则正常显示位数;

#表示如果位数不足,则该位不显示。

DecimalFormat中0和#的区别

DecimalFormat参数的含义

源代码测试

DecimalFormat数字格式化

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命令详解

正如下图,每一个“文本”都会被当做参数传递到printf命令,而每一个传入的参数都会按照指定的"格式"被"格式化"。

image.png

%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时,如果数字修饰符带有小数,则是截取字符串的长度;

参考文章:

java 格式化 布尔型_Java基础篇(1)-格式化相关推荐

  1. java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期

    本文主要说一说关于switch case语句用法及注意事项,应对面试官的提问.希望可以帮助那些对switch存在错误和各种细节问题的"码友". switch-case注意事项 sw ...

  2. invader的java学习第三天基础篇

    invader的java学习第三天基础篇 一.整数的取值范围表 类型名称 数据类型 所占空间 表数范围 字节型 byte 1字节 -128-127 短整型 short 2字节 +-3w(-2^15-2 ...

  3. java从小白到工程师--基础篇(二)

    本期作业:将你的姓氏的Unicode码用程序显示出来. 上一章节中我们配置了环境变量,编写了第一个java程序"hello,world"(java从小白到工程师--基础篇(一) ) ...

  4. 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)

    [书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 ­}:YKf: ...

  5. invader的java学习第五天基础篇

    invader的java学习第五天基础篇(持续更新中-) 一.位运算符 ^.&.|.~.>>.<<.>>>,位运算符就是基于二进制直接进行运算(0为f ...

  6. java玩转区块链-基础篇-solidity语法-基础类型

    java玩转区块链-基础篇-solidity语法-基础类型 java环境配置 代码准备 maven 完整solidity 执行步骤 基础类型 布尔类型 类型标识: 字面常量值: 运算符: 短路规则: ...

  7. java玩转区块链-基础篇-账户

    java玩转区块链-基础篇--账户 java环境配置 基础概念 账户 maven包引用 创建账户代码 代码解释 (1) (2) (3) (4) 可以不让搞,但是不允许你不会 java环境配置 jdk版 ...

  8. 名师讲坛—Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)

    名师讲坛-Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax) 基本信息 作者: 李兴华    王月清   出版社:清华大学出版社 ISBN:9787302231585 ...

  9. invader的java学习第四天基础篇

    invader的java学习第四天基础篇(持续更新中-) 一.类型转换 自动转换(数值之间在进行四则运算时,数据类型会自动向大类型靠拢) byte num=10; short a=num; Syste ...

最新文章

  1. 沉甸甸的证书,沉甸甸的心情
  2. 新手学python还是c语言_py和c语言究竟新手该学哪个?
  3. 微信小程序AES加密解密
  4. JavaScript精要
  5. SQLite 命令(http://www.w3cschool.cc/sqlite/sqlite-commands.html)
  6. docker与kuberentes基本概念与操作学习
  7. android 启动第三方程序的代码(利用ComponentName)
  8. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈
  9. unity3d 使用GL 方式画线
  10. 远程桌面和云主机,可以听到云主机内部的声音
  11. springBoot上传文件时MultipartFile报空问题解决方法
  12. 解决eclispe SVN 创建资源库报错,无法验证:SVN…… 504 Connection to server timed out
  13. 程序、代码、硬件常见的英文缩写
  14. Linux入门——环境配置
  15. Lync Server 2013 实战系列之七:标准版-测试内部登陆
  16. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  17. Linux学习2.0(非markdown编辑)
  18. android adb:电池与电量
  19. Oracle19c数据库服务
  20. MB10F-ASEMI整流桥MB10F

热门文章

  1. mysql统计数据的代码_MySQL按时间统计数据的方法介绍(代码示例)
  2. html中字体,特殊字符和标签如何显示呢?
  3. php如何获得文件数量,PHP:获取目录中文件数量的最有效方法
  4. 鸿合怎么删掉linux6_鸿合电子白板怎么校准?鸿合电子白板校准的方法
  5. python消息中间件有哪些_消息中间件选型
  6. Permutation Partitions CodeForces - 1326C(组合数学+思维)
  7. 机器学习实战--决策树算法
  8. marquee文字起始位置_PS修图改字无痕扫描件复印件截图文字英文日期修改:制作漂亮红色丝绸文字图片的PS教程...
  9. android 半浮层框架,GitHub - Jodragon/AnyLayer: Android稳定高效的浮层创建管理框架
  10. mysql存储过程实例_mysql存储过程案例讲解