Java Formatter是一个实用程序类 , 可以在使用Java格式化流输出时简化工作 。 它的构建类似于C/C++ printf 函数 , 它用于格式化数据并将其输出到特定目的地 , 例如字符串或文件输出流 。 本文探讨了该类并说明了它在Java日常编程中的一些实用性 。
概述
Java Formatter类在java.util 包中定义并声明为final 。 因此 , 它不能被扩展或细分 。 Formatter类实现了Closeable和 Flushable 接口 。 从Closeable接口派生的唯一 close() 方法由此类定义 , 用于释放任何占用的资源 , 例如打开的文件、流等 。 并且 , 从Flushable接口派生的flush()方法被调用以将缓冲的输出写入底层流 。
通过printf函数可以显示格式化数据 , 很像C的printf样式格式化函数 。 此功能特别适合将格式化输出显示到标准输出流 。 使用Java的printf样式函数格式化输出很好 , 但Java Formatter类使这个实用程序更进一步 。 在此类的帮助下 , 我们可以将格式化的输出发送到其他输出流或设备 , 例如GUI组件或标准输出之外的文件 。 它提供与printf相同的格式化功能 , 例如布局对齐、对齐、数字、字符串、日期、时间数据的格式化以及特定于语言环境的输出 。 它基本上将二进制数据形式转换为格式化文本并将其存储到缓冲区中 。 它提供了一个默认缓冲区 , 或者我们可以在其创建期间提供一个缓冲区 。
【删除|Java:Java编程中的Java格式化程序是什么?】格式化程序构造
这个类提供了许多重载的构造函数 , 我们可以在调用期间显式地提供一个 Appendable缓冲区 。 Appendable接口表示一个对象 , 该对象附加了有效的 unicode字符序列和值 。
还有其他构造函数 , 我们可以在其中提供File对象、OutputStream对象或PrintStream对象 。 例如 , 一些常用的构造函数如下:
Formatter():创建Formatter对象的无参数构造函数 。 它对从StringBuilder创建的默认缓冲区进行操作 。 它是所有类型的常用构造函数 。
Formatter(Appendable a):这里 , Appendable对象指定了一个用于格式化输出的缓冲区 。 但是 , 如果该值为null , 则该对象会自动创建一个Stringbuilder来保存格式化的输出 。
Formatter(Appendable a Locale loc):Locale对象根据指定的locale对输出格式进行区域化 。 如果未指定 , 则使用默认语言环境 。 有时 , 需要使用区域设置来根据地缘政治或文化敏感数据定制输出 , 例如格式化日期和时间、替换特定区域设置的小数分隔符等 。
Formatter(File file):此构造函数的file参数指定对将流式传输输出的打开文件的引用 。
使用格式化程序
一旦创建了Formatter对象 , 它就可以以多种方式使用 , 格式说明符指定数据的格式化方式 。 一些常见的格式说明符是:
%S或%s:指定字符串
%X或%x:指定十六进制整数
%o:指定八进制整数
%d:指定十进制整数
%c:指定字符
%T或%t:指定时间和日期
%n: 插入换行符
%B或%b:指定布尔值
%A或%a:指定浮点十六进制
%f:指定十进制浮点数
argument_index 是可选的 , 整数值1$、2$等表示第一个、第二个等参数 。
可选标志表示修改输出格式的字符 。
可选宽度表示要写入输出的最小字符数 。
可选精度表示定义浮点值精度的正十进制整数值 。
转换不是可选的 , 它表示参数的数据类型 , 例如%d表示整数 , %s表示字符串等 。
结论
尽管Formatter实现了 AutoCloseable 接口 , 但最好在close() 函数的帮助下关闭Formatter实例 , 尤其是在处理文件时 。 这释放了所使用的资源 。 在将输出格式化到控制台时最好使用printf , 因为它会自动将Formatter与System.out一起使用 。 需要注意的是Formatter不是线程安全的 。 因此 , 应谨慎使用多线程访问 。
- Java|天企网络:网站优化中关键词与网站内容
- Java|互联网医疗的下个十年,缺的不是“卖药和问诊”
- Java|2021年李佳琦净赚18.6亿,罗永浩2.5亿,超100位主播年入达3190万
- javascript|自研芯+双神U,Reno8王牌轮番炸场
- Java|钉钉“贪财”出下策
- 删除|如果看不见听不到,如何拥抱互联网?OPPO“微笑提案”有话说
- Java|暗网有多恐怖?亲历者对它闭口不谈
- Java|美国也不过如此,中国液体火箭有多牛?发动机直接用了3D打印技术
- Java|Web前端:如何使用React构建令人惊叹的用户界面
- javascript|华为海外发布 Watch Fit 2,和上一代相比功能略有提升?