Java Formatter是一個(gè)實(shí)用程序類,可以在使用Java格式化流輸出時(shí)簡(jiǎn)化工作。它的構(gòu)建類似于C/C++ printf 函數(shù),它用于格式化數(shù)據(jù)并將其輸出到特定目的地,例如字符串或文件輸出流。本文探討了該類并說(shuō)明了它在Java日常編程中的一些實(shí)用性。通過(guò)參加java培訓(xùn),你可以學(xué)習(xí)更多java開(kāi)發(fā)技能,提升自己。
概述
Java Formatter類在java.util 包中定義并聲明為final。因此,它不能被擴(kuò)展或細(xì)分。Formatter類實(shí)現(xiàn)了Closeable和 Flushable 接口。從Closeable接口派生的唯一 close() 方法由此類定義,用于釋放任何占用的資源,例如打開(kāi)的文件、流等。并且,從Flushable接口派生的flush()方法被調(diào)用以將緩沖的輸出寫(xiě)入底層流。
通過(guò)printf函數(shù)可以顯示格式化數(shù)據(jù),很像C的printf樣式格式化函數(shù)。此功能特別適合將格式化輸出顯示到標(biāo)準(zhǔn)輸出流。使用Java的printf樣式函數(shù)格式化輸出很好,但Java Formatter類使這個(gè)實(shí)用程序更進(jìn)一步。在此類的幫助下,我們可以將格式化的輸出發(fā)送到其他輸出流或設(shè)備,例如GUI組件或標(biāo)準(zhǔn)輸出之外的文件。它提供與printf相同的格式化功能,例如布局對(duì)齊、對(duì)齊、數(shù)字、字符串、日期、時(shí)間數(shù)據(jù)的格式化以及特定于語(yǔ)言環(huán)境的輸出。它基本上將二進(jìn)制數(shù)據(jù)形式轉(zhuǎn)換為格式化文本并將其存儲(chǔ)到緩沖區(qū)中。它提供了一個(gè)默認(rèn)緩沖區(qū),或者我們可以在其創(chuàng)建期間提供一個(gè)緩沖區(qū)。
格式化程序構(gòu)造
這個(gè)類提供了許多重載的構(gòu)造函數(shù),我們可以在調(diào)用期間顯式地提供一個(gè) Appendable緩沖區(qū)。Appendable接口表示一個(gè)對(duì)象,該對(duì)象附加了有效的 unicode字符序列和值。想要學(xué)習(xí)java更多知識(shí)和技能,可以考慮參加java培訓(xùn),有經(jīng)驗(yàn)豐富的專業(yè)講師指導(dǎo)教學(xué),有緊跟市場(chǎng)需求的實(shí)時(shí)課程,可以讓你快速掌握這門技術(shù),節(jié)約時(shí)間,少走彎路。
還有其他構(gòu)造函數(shù),我們可以在其中提供File對(duì)象、OutputStream對(duì)象或PrintStream對(duì)象。例如,一些常用的構(gòu)造函數(shù)如下:
Formatter():創(chuàng)建Formatter對(duì)象的無(wú)參數(shù)構(gòu)造函數(shù)。它對(duì)從StringBuilder創(chuàng)建的默認(rèn)緩沖區(qū)進(jìn)行操作。它是所有類型的常用構(gòu)造函數(shù)。
Formatter(Appendable a):這里,Appendable對(duì)象指定了一個(gè)用于格式化輸出的緩沖區(qū)。但是,如果該值為null,則該對(duì)象會(huì)自動(dòng)創(chuàng)建一個(gè)Stringbuilder來(lái)保存格式化的輸出。
Formatter(Appendable a, Locale loc):Locale對(duì)象根據(jù)指定的locale對(duì)輸出格式進(jìn)行區(qū)域化。如果未指定,則使用默認(rèn)語(yǔ)言環(huán)境。有時(shí),需要使用區(qū)域設(shè)置來(lái)根據(jù)地緣政治或文化敏感數(shù)據(jù)定制輸出,例如格式化日期和時(shí)間、替換特定區(qū)域設(shè)置的小數(shù)分隔符等。
Formatter(File file):此構(gòu)造函數(shù)的file參數(shù)指定對(duì)將流式傳輸輸出的打開(kāi)文件的引用。
使用格式化程序
一旦創(chuàng)建了Formatter對(duì)象,它就可以以多種方式使用,格式說(shuō)明符指定數(shù)據(jù)的格式化方式。想要快速學(xué)會(huì)java技能,建議報(bào)名參加java培訓(xùn),有明確清晰的學(xué)習(xí)路線,系統(tǒng)規(guī)范的課程,專業(yè)講師面授指導(dǎo)教學(xué),可以在短時(shí)內(nèi)獲得很大提升。一些常見(jiàn)的格式說(shuō)明符是:
%S或%s:指定字符串
%X或%x:指定十六進(jìn)制整數(shù)
%o:指定八進(jìn)制整數(shù)
%d:指定十進(jìn)制整數(shù)
%c:指定字符
%T或%t:指定時(shí)間和日期
%n: 插入換行符
%B或%b:指定布爾值
%A或%a:指定浮點(diǎn)十六進(jìn)制
%f:指定十進(jìn)制浮點(diǎn)數(shù)
argument_index 是可選的,整數(shù)值1$、2$等表示第一個(gè)、第二個(gè)等參數(shù)。
可選標(biāo)志表示修改輸出格式的字符。
可選寬度表示要寫(xiě)入輸出的最小字符數(shù)。
可選精度表示定義浮點(diǎn)值精度的正十進(jìn)制整數(shù)值。
轉(zhuǎn)換不是可選的,它表示參數(shù)的數(shù)據(jù)類型,例如%d表示整數(shù),%s表示字符串等。
結(jié)論
盡管Formatter實(shí)現(xiàn)了 AutoCloseable 接口,但最好在close() 函數(shù)的幫助下關(guān)閉Formatter實(shí)例,尤其是在處理文件時(shí)。這釋放了所使用的資源。在將輸出格式化到控制臺(tái)時(shí)最好使用printf,因?yàn)樗鼤?huì)自動(dòng)將Formatter與System.out一起使用。需要注意的是Formatter不是線程安全的。因此,應(yīng)謹(jǐn)慎使用多線程訪問(wèn)。在java培訓(xùn)中,會(huì)有關(guān)于Java Formatter的知識(shí)課程,學(xué)好這些技巧,有助于更好地進(jìn)行開(kāi)發(fā)項(xiàng)目,少出問(wèn)題。