formatter java_Java编程中的Java Formatter是什么?
Java編程中的Java Formatter是什么?
作者:admin
分類:PHP, JAVA, .NET文章
時間:2017-03-30 21:13:02
點擊量:1428
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相同的格式化功能,例如布局對齊,對齊,數字格式,字符串,日期,時間數據和特定于區域設置的輸出。 它基本上將二進制數據格式轉換成格式化的文本并將其存儲到緩沖區中。 它提供一個默認緩沖區,或者我們可以在創建時提供一個緩沖區。
格式化設計
這個類提供了許多重載的構造函數,我們可以在調用期間顯式提供一個可附加緩沖區。 可附加接口表示附加有效unicode字符序列和值的對象。 還有其他構造函數,我們可以提供一個File對象,OutputStream對象或者PrintStream對象。 例如,一些常用的構造函數如下:
Formatter(): 它是一個無參數的構造函數用以創建一個Formatter對象。 它運行于由StringBuilder創建的默認緩沖區。 它是所有類型的常用構造函數。
格式化器(可附加a): 在此,Appendable對象特指格式化輸出的緩沖區。 但是,如果值為空,則該對象自動創建一個Stringbuilder來保存格式化的輸出。
格式化器(可附加a,區域設置loc): 區域設置對象根據指定的區域設置區分輸出格式。 如果未指定,則使用默認區域。 有時,需要根據地理政治或文化敏感數據來定制輸出,例如格式化日期和時間,替換一個特定區域的小數分隔符等的區域設置。
格式化器(File文件): 該構造函數的file參數指定一個對要輸出打開文件的引用。
一旦格式化對象被創建,它可以以許多方式使用。 格式說明符指定數據格式化的方式。 有關它們的完整文檔,請參閱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
一般,字符和數字類型的格式說明符應用應符合如下語法:
%[argument_index$][flags][width][.precision]conversion
argument_index是可選的,整數值1 $,2 $,以及代表第一個,第二個參數等等。
可選標志表示修改輸出格式的字符。
可選寬度表示要在輸出中寫入最少字符數。
可選精度表示定義一個浮點值精度的正十進制整數值。
轉換不是可選的; 它表示參數數據類型,例如整數的%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);
結論
雖然Formatter實現了AutoCloseable接口,但是在close()函數的幫助下,特別是處理文件時,關閉Formatter實例較好。 這樣就釋放了所用資源。 將一個輸出格式化到控制臺時最好使用printf,因為它會自動使用Formatter與System.out。應該注意的是,Formatter不具有線程安全性。 因此,應謹慎使用多線程訪問。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的formatter java_Java编程中的Java Formatter是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大学生用 GPT-3 写论文遭重罚,拒不
- 下一篇: 巴菲特再次减持比亚迪:套现 2.03 亿