网站首页 > 精选教程 正文
3.7.2 格式化输出
之前我们已经了解到,可以使用标准输出流输出数值。比如,System.out.print(x) ,可以将数值x 以它的类型所能表述的最大非0位数打印。比如
double x = 10000/ 3.0;
System.out.print(x) ; // 打印结果为 3333.3333333333335
如果希望显示的是钱,这种显示方式就不太好了。
这个问题可以用printf 来解决,Java这里的设计沿用了C语言函数库中的古老约定。例如,System.out.printf(“%8.2f”,x);
这句代码表示,字段宽度(field width )为8个字符,精度为2个字符。也就是,结果包含一个签到的空格和7个字符,结果为 3333.33 。 注意,这里的8值得是最小宽度,也就是如果不足8位,会在前面补空格,如果是超过8位,就正常显示。
可以为printf提供多个参数,例如
System.out.printf(“Hello, %s. Next year, you'll be %d” , name, age);
每一个以 % 字符开头的格式说明符(format specifiers) 都替换为相应的参数。格式说明符末尾的转换字符(conversion character) 指示要格式化的数值的类型: f 表示浮点数,s表示字符串,d表示十进制整数。
大写形式会生成大写字母。例如, “%8.2E”将3333.33格式化为 3.33E+03,这里有一个大写的E
注释
可以使用s 转换字符格式化任意对象。如果一个任意对象实现了Formattable接口,会调用这个对象的formatTo方法。否则,会调用toString 方法将这个对象转换为一个字符串。
toString 会在第5章讨论
接口将在第6章介绍
另外,还可以指定控制格式化输出外观的各种标志(flag)。下表列出了用于printf的标志。例如,逗号标志会增加分组分隔符。即 System.out.printf(“%,.2f”,10000/3.0); 打印输出为 3,333.33
可以使用多个标志,例如,“%, ( .2f” 会使用分组分隔符,并将负数包围在括号内。
可以使用静态的String.format 方法创建一个格式化的字符串而不是打印输出。
String message = String.format(“Hello, %s, Next year, you'll be %d” , name, age+1);
注释:在Java 15中,可以使用 formatted 方法,这样可以少敲5个字符:
String message = “Hello, %s, Next year, you'll be %d”.formatted(name, age+1);
注释:格式化规则是特定于 “本地化环境”的,例如,在德国,分组分隔符是点号而不是逗号。在卷2第7章中将介绍如何控制应用的国际化行为。
- 上一篇: java之数据格式化 java格式化整数
- 下一篇: Go语言进阶之路(九):时间处理和格式化输出
猜你喜欢
- 2024-10-28 Java 8 中处理日期和时间示例 java 日期时间格式
- 2024-10-28 Java 实现日期的格式化,月份和天不足两位时补上0
- 2024-10-28 Java中日期格式化YYYY-DD的坑 java 日期格式化为yyyy-mm-dd mmss
- 2024-10-28 Java 的流程控制是什么样子的 java流程控制有哪些
- 2024-10-28 Java优雅的保留两位小数 java保留两位数字
- 2024-10-28 阿里面试官:聊聊如何格式化 Instant
- 2024-10-28 圆你的大厂梦!今日头条Java高频面试题真题:一/二/三面+常见问题
- 2024-10-28 “全栈2019”Java第十四章:二进制、八进制、十六进制
- 2024-10-28 Java,FreeMarker,模板引擎,通过案例代码,学懂模板引擎
- 2024-10-28 Springboot强大的数据格式化功能你必须要知道
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)