formatter java_Java编程中的Java Formatter是什么?
Java編程中的Java Formatter是什么?
作者:admin
分類:PHP, JAVA, .NET文章
時間:2017-03-30 21:13:02
點擊量:1428
Java Formatter是一個實用程序類,可以在Java中使用格式化流輸出時使生存變得簡單。 它的構(gòu)建類似于C / C ++ printf函數(shù)。 它用于將數(shù)據(jù)格式化并輸出到特定目的地,例如字符串或文件輸出流。 本文探討了這個類,并說明它在Java日常編程中的一些用途。
概述
Java Formatter類在java.util包中被定義,并被聲明為final。 因此,它不能被擴展或分類。 Formatter類實現(xiàn)了Closeable和Flushable接口。 從Closeable接口派生的close()方法是由這個類定義的,以釋放任何被保存的資源,例如打開的文件,流等。 并且,調(diào)用從Flushable接口派生的flush()方法將緩沖輸出寫入底層流。
通過printf函數(shù)可以顯示格式化數(shù)據(jù)的方法,就像C的printf風格格式化函數(shù)一樣。 此功能特別適用于將格式化的輸出顯示到標準輸出流。 使用Java的printf樣式函數(shù)格式化輸出是很好的,但Java Formatter類對此實用程序有更遠的使用。 在這個類的幫助下,我們可以將格式化的輸出發(fā)送到其他輸出流或設備,如GUI組件或除了標準輸出之外的文件。 它提供與printf相同的格式化功能,例如布局對齊,對齊,數(shù)字格式,字符串,日期,時間數(shù)據(jù)和特定于區(qū)域設置的輸出。 它基本上將二進制數(shù)據(jù)格式轉(zhuǎn)換成格式化的文本并將其存儲到緩沖區(qū)中。 它提供一個默認緩沖區(qū),或者我們可以在創(chuàng)建時提供一個緩沖區(qū)。
格式化設計
這個類提供了許多重載的構(gòu)造函數(shù),我們可以在調(diào)用期間顯式提供一個可附加緩沖區(qū)。 可附加接口表示附加有效unicode字符序列和值的對象。 還有其他構(gòu)造函數(shù),我們可以提供一個File對象,OutputStream對象或者PrintStream對象。 例如,一些常用的構(gòu)造函數(shù)如下:
Formatter(): 它是一個無參數(shù)的構(gòu)造函數(shù)用以創(chuàng)建一個Formatter對象。 它運行于由StringBuilder創(chuàng)建的默認緩沖區(qū)。 它是所有類型的常用構(gòu)造函數(shù)。
格式化器(可附加a): 在此,Appendable對象特指格式化輸出的緩沖區(qū)。 但是,如果值為空,則該對象自動創(chuàng)建一個Stringbuilder來保存格式化的輸出。
格式化器(可附加a,區(qū)域設置loc): 區(qū)域設置對象根據(jù)指定的區(qū)域設置區(qū)分輸出格式。 如果未指定,則使用默認區(qū)域。 有時,需要根據(jù)地理政治或文化敏感數(shù)據(jù)來定制輸出,例如格式化日期和時間,替換一個特定區(qū)域的小數(shù)分隔符等的區(qū)域設置。
格式化器(File文件): 該構(gòu)造函數(shù)的file參數(shù)指定一個對要輸出打開文件的引用。
一旦格式化對象被創(chuàng)建,它可以以許多方式使用。 格式說明符指定數(shù)據(jù)格式化的方式。 有關(guān)它們的完整文檔,請參閱Java API文檔。 一些常見的格式說明符是:
%S or %s: Specifies String
%X or %x: Specifies hexadecimal integer
%o: Specifies Octal integer
%d: Specifies Decimal integer
%c: Specifies character
%T or %t: Specifies Time and date
%n: Inserts newline character
%B or %b: Specifies Boolean
%A or %a: Specifies floating point hexadecimal
%f: Specifies Decimal floating point
一般,字符和數(shù)字類型的格式說明符應用應符合如下語法:
%[argument_index$][flags][width][.precision]conversion
argument_index是可選的,整數(shù)值1 $,2 $,以及代表第一個,第二個參數(shù)等等。
可選標志表示修改輸出格式的字符。
可選寬度表示要在輸出中寫入最少字符數(shù)。
可選精度表示定義一個浮點值精度的正十進制整數(shù)值。
轉(zhuǎn)換不是可選的; 它表示參數(shù)數(shù)據(jù)類型,例如整數(shù)的%d,字符串的%s等。
一些簡單的例子
Using argument_index
Formatter f=new Formatter();
f.format("%3$3s %2$3s %1$3s", "fear",
"strengthen", "weakness");
System.out.println(f);
StringBuilder builder=new StringBuilder();
Formatter f=new Formatter(builder);
f.format(Locale.FRANCE,"%.5f", -1325.789);
System.out.println(f);
Formatter f2=new Formatter();
f2.format(Locale.CANADA, "%.5f", -1325.789);
System.out.println(f2);
Regionalize Date
Formatter f3=new Formatter();
f3.format(Locale.FRENCH,"%1$te %1$tB, %1$tY",
Calendar.getInstance());
System.out.println(f3);
Formatter f4=new Formatter();
f4.format(Locale.GERMANY,"%1$te %1$tB, %1$tY",
Calendar.getInstance());
System.out.println(f4);
Using %n and %% Specifiers
Formatter f = new Formatter();
f.format("Format%n %.2f%% complete", 46.6);
System.out.println(f);
結(jié)論
雖然Formatter實現(xiàn)了AutoCloseable接口,但是在close()函數(shù)的幫助下,特別是處理文件時,關(guān)閉Formatter實例較好。 這樣就釋放了所用資源。 將一個輸出格式化到控制臺時最好使用printf,因為它會自動使用Formatter與System.out。應該注意的是,Formatter不具有線程安全性。 因此,應謹慎使用多線程訪問。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的formatter java_Java编程中的Java Formatter是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学生用 GPT-3 写论文遭重罚,拒不
- 下一篇: java protected关键字_Ja