Formatter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
printf 樣式格式字串的解釋器。
[Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)]
public sealed class Formatter : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable, Java.IO.IFlushable
[<Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)>]
type Formatter = class
inherit Object
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IFlushable
- 繼承
- 屬性
- 實作
備註
printf 樣式格式字串的解釋器。 這個類別支援配置對齊和對齊方式、數值、字串和日期/時間數據的常見格式,以及地區設定特定的輸出。 支援常見的 Java 類型,例如 byte
、 java.math.BigDecimal BigDecimal
和 Calendar
。 透過介面提供 Formattable
任意用戶類型的有限格式自定義。
格式器不一定安全進行多線程存取。 線程安全性是選擇性的,而且是這個類別中方法用戶的責任。
Java 語言的格式化列印受到 C 的 printf
大幅啟發。 雖然格式字串類似於 C,但已進行一些自定義,以容納 Java 語言並利用其部分功能。 此外,Java 格式比 C 更嚴格;例如,如果轉換與旗標不相容,則會擲回例外狀況。 在 C 中,無法套用的旗標會以無訊息方式忽略。 因此,格式字串是供 C 程式設計人員辨識,但不一定與 C 中的程式設計人員完全相容。
預期使用量的範例:
<blockquote>
StringBuilder sb = new StringBuilder();
// Send all output to the Appendable object sb
Formatter formatter = new Formatter(sb, Locale.US);
// Explicit argument indices may be used to re-order output.
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
// -> " d c b a"
// Optional locale as the first argument can be used to get
// locale-specific formatting of numbers. The precision and width can be
// given to round and align the value.
formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
// -> "e = +2,7183"
// The '(' numeric flag may be used to format negative numbers with
// parentheses rather than a minus sign. Group separators are
// automatically inserted.
formatter.format("Amount gained or lost since last statement: $ %(,.2f",
balanceDelta);
// -> "Amount gained or lost since last statement: $ (6,217.58)"
</blockquote>
常見格式要求的便利方法存在,如下列調用所示:
<blockquote>
// Writes a formatted string to System.out.
System.out.format("Local time: %tT", Calendar.getInstance());
// -> "Local time: 13:34:18"
// Writes formatted output to System.err.
System.err.printf("Unable to open file '%1$s': %2$s",
fileName, exception.getMessage());
// -> "Unable to open file 'food': No such file or directory"
</blockquote>
如同 C, sprintf(3)
字串可能會使用靜態方法 String#format(String,Object...) String.format
進行格式化:
<blockquote>
// Format a string containing a date.
import java.util.Calendar;
import java.util.GregorianCalendar;
import static java.util.Calendar.*;
Calendar c = new GregorianCalendar(1995, MAY, 23);
String s = String.format("Duke's Birthday: %1$tb %1$te, %1$tY", c);
// -> s == "Duke's Birthday: May 23, 1995"
</blockquote>
<h3>“org”>Organization</h3>
此規格分成兩個區段。 第一節摘要涵蓋基本格式概念。 本節適用於想要快速開始使用且熟悉其他程序設計語言格式化列印的使用者。 第二節詳細數據涵蓋特定的實作詳細數據。 它適用於想要更精確指定格式行為的使用者。
<h3>“summary”>Summary</h3>
本節旨在提供格式化概念的簡短概觀。 如需精確的行為詳細數據,請參閱詳細數據一節。
<h4>“syntax”>Format String Syntax</h4>
產生格式化輸出的每個方法都需要 格式字串 和 自變數清單。 格式字串是 , String
可能包含固定文字和一或多個內嵌 格式規範。 請考慮下列範例:
<blockquote>
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
</blockquote>
這個格式字串是 方法的第一個自變數 format
。 它包含三個格式規範 “%1$tm
”、“”%1$te
和 “%1$tY
”,指出應該如何處理自變數,以及應該在文字中插入的位置。 格式字串的其餘部分是固定文字,包括 "Dukes Birthday: "
和任何其他空格或標點符號。
自變數清單包含所有在格式字串之後傳遞至 方法的自變數。 在上述範例中,自變數清單的大小為一,由對象 c
所組成java.util.Calendar Calendar
。
<ul>
<li> 一般、字元和數值類型的格式規範具有下列語法:
<blockquote>
%[argument_index$][flags][width][.precision]conversion
</blockquote>
選擇性 argument_index 是一個十進位整數,指出自變數清單中的自變數位置。 第一個自變數由 「1$
參考,第二個自變數由」2$
等參考。
選擇性 旗標 是一組修改輸出格式的字元。 有效的旗標集取決於轉換。
選擇性 寬度 是正十進位整數,表示要寫入輸出的字元數下限。
選擇性 有效位數 是非負數十進位整數,通常用來限制字元數目。 特定行為取決於轉換。
必要的 轉換 是一個字元,指出應該如何格式化自變數。 指定自變數的有效轉換集取決於自變數的數據類型。
<li> 用來表示日期和時間的類型格式規範具有下列語法:
<blockquote>
%[argument_index$][flags][width]conversion
</blockquote>
選擇性 argument_index、 旗標 和 寬度 定義為上述。
必要的 轉換 是兩個字元序列。 第一個字元是 't'
或 'T'
。 第二個字元表示要使用的格式。 這些字元與 GNU 和 POSIX 所定義的字元相似,但與 POSIX date
strftime(3c)
所定義的字元完全相同。
<li> 未對應至自變數的格式規範具有下列語法:
<blockquote>
%[flags][width]conversion
</blockquote>
選擇性 旗標 和 寬度 定義為上方。
必要的 轉換 是字元,表示要插入輸出中的內容。
</ul>
<h4> 轉換 </h4>
轉換分為下列類別:
<老>
<li><b>一般</b> - 可套用至任何自變數類型
<li>b 字元/b> - 可套用至代表 Unicode 字元<的基本類型:char
、Character
、、byte
、Byte
、 short
和 Short
。>< 此轉換也可能套用至型int
別,以及Integer
傳回<true
li<>b>Numeric</b 時Character#isValidCodePoint
>
<老>
<li>b 整數/b> - 可以套用至 Java 整數<類型:byte
、Byte
、short
、Short
int
、 和 Integer
、long
、 Long
和 java.math.BigInteger BigInteger
(但不是 char
或 )><Character
<li><b浮點</b> - 可套用至 Java 浮點類型:float
、Float
、double
、 Double
和 java.math.BigDecimal BigDecimal
<>/ol>
<li>b日期/時間</b> - 可以編碼日期或時間的 Java 類型:long
、Long
Calendar
、 Date
和 TemporalAccessor TemporalAccessor
<li><b>百分比</b> - 產生常值 '%'
()'\u0025'
><
<li><b>行分隔符</b> - 產生平臺特定行分隔符
</老>
如果是類別 [一般]、[字元]、[數位]、[整數] 和 [日期/時間] 轉換,除非另有指定,否則自變數 arg 為 null
,則結果為 “null
”。
下表摘要說明支持的轉換。 以大寫字元表示的轉換(例如'B'
,、'H'
、、'C'
'S'
、、'E'
'X'
、'G'
、 'A'
和 'T'
),與對應小寫轉換字元的轉換字元相同,不同之處在於結果會根據佔位java.util.Locale Locale
規則轉換成大寫。 如果沒有指定明確的地區設定,請在 實體的建構或做為其方法調用的參數,則會 java.util.Locale.Category#FORMAT default locale
使用 。
<table class=“striped”><caption style=“display:none”>genConv</caption><thead><tr><th scope=“col” style=“vertical-align:> bottom” Conversion <th scope=“col” style=“vertical-align:bottom”> Argument Category <th scope=“col” style=“vertical-align:bottom”> Description </thead><tbody><tr><th scope=“row” style=“vertical-align:top”>'b'
, 'B'
<td style=“vertical-align:top”> 一般 <td> 如果自變數 arg 為 null
,則結果為 “false
”“。 如果 arg 是 boolean
或 Boolean
,則結果為 所傳回的 String#valueOf(boolean) String.valueOf(arg)
字串。 否則,結果是 「true」。
<tr><th scope=“row” style=“vertical-align:top”>'h'
, 'H'
<td style=“vertical-align:top”> 一般 <td> 叫用 來取得 Integer.toHexString(arg.hashCode())
結果。
<tr><th scope=“row” style=“vertical-align:top”'s'
>,<'S'
td style=“vertical-align:top”> 一般 <td> 如果 arg 實作 Formattable
,則會Formattable#formatTo arg.formatTo
叫用 。 否則,藉由叫 arg.toString()
用 來取得結果。
<tr><th scope=“row” style=“vertical-align:top”>'c'
, 'C'
<td style=“vertical-align:top”> 字符 td> 結果為 Unicode 字符<
<tr><th scope=“row” style=“vertical-align:top”><'d'
td style=“vertical-align:top”> 整數 <td> 結果格式化為十進制整數
<tr><th scope=“row” style=“vertical-align:top”><'o'
td style=“vertical-align:top”> 整數 <td> 結果格式化為八進制整數
<tr><th scope=“row” style=“vertical-align:top”>'x'
, 'X'
<td style=“vertical-align:top”> 整數 <td> 結果格式化為十六進制整數
<tr><th scope=“row” style=“vertical-align:top”>'e'
, 'E'
<td style=“vertical-align:top”> 浮點 <td> 結果格式化為計算機化科學表示法中的十進制數
<tr><th scope=“row” style=“vertical-align:top”><'f'
td style=“vertical-align:top”> 浮點 <td> 結果格式化為十進制數
<tr><th scope=“row” style=“vertical-align:top”>'g'
, 'G'
<td style=“vertical-align:top”> 浮點 <td> 使用計算機化科學表示法或十進位格式來格式化結果,視進位後的精確度和值而定。
<tr><th scope=“row” style=“vertical-align:top”>'a'
, 'A'
<td style=“vertical-align:top”> 浮點 td> 結果會格式化為具有正負號和指數的十六進位浮點<數。 儘管後者位於浮點自變數類別中,但類型仍><不支援BigDecimal
此轉換<>。
<tr><th scope=“row” style=“vertical-align:top”>'t'
, 'T'
<td style=“vertical-align:top”> date/time td> Prefix for date and time <conversion characters. 請參閱日期/時間轉換。
<tr><th scope=“row” style=“vertical-align:top”'%'
><td style=“vertical-align:top”> percent <td> 結果為常值 '%'
()'\u0025'
<tr><th scope=“row” style=“vertical-align:top”><'n'
td style=“vertical-align:top”> line separator td> 結果為平臺特定的行分隔符<
</tbody></table>
未明確定義為轉換的任何字元都是非法的,並保留給未來的延伸模組。
<h4>“dt”>Date/Time Conversions</h4>
下列日期和時間轉換後綴字元會針對 和 'T'
轉換定義't'
。 這些類型與 GNU 和 POSIX 所定義的類型類似,但與 POSIX date
strftime(3c)
所定義的類型完全相同。 提供其他轉換類型來存取 Java 特定的功能(例如 'L'
,在第二秒內為毫秒)。
下列轉換字元用於格式化時間:
<table class=“striped”><caption style=“display:none”>time</caption><tbody><tr><th scope=“row” style=“vertical-align:top”><'H'
td> Hour of the day for the 24 hour clock, formated as two digits with a leading zero 00 - 23
as ed.
<tr><th scope=“row” style=“vertical-align:top”><'I'
td> Hour for the 12-hour, formatd hour as two digits with a leading zero with a leading zero as necessary, 亦即 . 01 - 12
<tr><th scope=“row” style=“vertical-align:top”><'k'
td> Hour of the day for the 24-hour clock, 亦即 . 0 - 23
<tr><th scope=“row” style=“vertical-align:top”><'l'
td> Hour for the 12-hour clock, 亦即 . 1 - 12
<tr><th scope=“row” style=“vertical-align:top”><'M'
td> Minute, the hour formatd as two digits with a leading zero as a leading zero as necessary, 亦即 . 00 - 59
<tr><th scope=“row” style=“vertical-align:top”'S'
<>td> Seconds within the minute, formatd as two digits with a leading zero with aleading zero as requiredy, 亦即 00 - 60
(“”60
is a special value to support leap seconds.
<tr><th scope=“row” style=“vertical-align:top”><'L'
td> 毫秒內,第二個格式為三位數,並視需要前置零,亦即 。 000 - 999
<tr><th scope=“row” style=“vertical-align:top”><'N'
td> Nanosecond, formatd Nanosecond as 9 digits with leading zeros as necessary, 例如 . 000000000 - 999999999
<tr><th scope=“row” style=“vertical-align:top”><'p'
td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings morning 或 afternoon marker in lower case, 例如“”am
或 “pm
”。 使用轉換前置詞 'T'
會將此輸出強制為大寫。
<tr><th scope=“row” style=“vertical-align:top”>'z'
<td>RFC 822 style numeric time zone offset from GMT, 例如 。 -0800
此值會視需要針對日光節約時間進行調整。 針對 long
, Long
和 Date
使用的時區是這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。
<tr><th scope=“row” style=“vertical-align:top”<>'Z'
td> 代表時區縮寫的字符串。 此值會視需要針對日光節約時間進行調整。 針對 long
, Long
和 Date
使用的時區是這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。 Formatter 的地區設定將會取代自變數的地區設定(如果有的話)。
<tr><th scope=“row” style=“vertical-align:top”><'s'
td> Seconds,從 1970 00:00:00
年 1 月 1 日 UTC 開始開始的 Epoch 開始,即Long.MIN_VALUE/1000
為 。Long.MAX_VALUE/1000
<tr><th scope=“row” style=“vertical-align:top”<'Q'
>td> 毫秒,從 1970 00:00:00
年 1 月 1 日 UTC 開始開始的 Epoch 開始,即Long.MIN_VALUE
為 。Long.MAX_VALUE
</tbody></table>
下列轉換字元用於格式化日期:
<table class=“striped”><caption style=“display:none”>date</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”'B'
<>td> Locale-specific java.text.DateFormatSymbols#getMonths full month name, 例如 "January"
, 。 "February"
<tr><th scope=“row” style=“vertical-align:top”'b'
<>td> Locale-specific java.text.DateFormatSymbols#getShortMonths 縮寫月份名稱,例如 、 。 "Jan"
"Feb"
<tr><th scope=“row” style=“vertical-align:top”>'h'
<td> Same as 'b'
.
<tr><th scope=“row” style=“vertical-align:top”<'A'
>td> Locale-specific full name of the java.text.DateFormatSymbols#getWeekdays day, 例如"Sunday"
,<"Monday"
tr><th scope=“row” style=“vertical-align:top”'a'
><td> Locale-specific short name of the java.text.DateFormatSymbols#getShortWeekdays day of the week, 例如"Sun"
, "Mon"
<tr><th scope=“row” style=“vertical-align:top”<>'C'
td> Four-digit year 除以100
,會視需要格式化為前置零的兩位數,亦即 00 - 99
tr th scope=“row” style=“vertical-align:top”<>'Y'
td> Year,格式為至少四位數,並視需要將前置零格式化為至少四位數,例如0092
等於92
公曆的 CE。><<
<tr><th scope=“row” style=“vertical-align:top”><'y'
td> 年份的最後兩位數,視需要格式化為前置零,亦即 。 00 - 99
<tr><th scope=“row” style=“vertical-align:top”>'j'
<td> Day of year, formatd as three digits with leading zeros as leading zeros as necessary, e. as. for Gregorian calendar. 001 - 366
<tr><th scope=“row” style=“vertical-align:top”><'m'
td> Month, formatd as two digits with leading zeros as leading zeros as necessary, 亦即 . 01 - 13
<tr><th scope=“row” style=“vertical-align:top”<'d'
>td> Month, formatd as two digits with leading zeros as leading zeros as necessary, e. 01 - 31
<tr><th scope=“row” style=“vertical-align:top”<>'e'
td> Day of month, formatted as two digits, 亦即 . 1 - 31
</tbody></table>
下列轉換字元用於格式化常見的日期/時間組合。
<table class=“striped”><caption style=“display:none”>composites</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”><'R'
td> Time formatted for the 24 hour clock as "%tH:%tM"
<tr><th scope=“row” style=“vertical-align:top”'T'
<>td> Time formatted for the 24 hour clock as ."%tH:%tM:%tS"
<tr><th scope=“row” style=“vertical-align:top”>'r'
<td> Time formatted for the 12-hour clock as ."%tI:%tM:%tS %Tp"
上午或下午標記 ('%Tp'
) 的位置可能依地區設定而定。
<tr><th scope=“row” style=“vertical-align:top”>'D'
<td> Date formatted as "%tm/%td/%ty"
.
<tr><th scope=“row” style=“vertical-align:top”>'F'
<td>ISO 8601 complete date formatted as ."%tY-%tm-%td"
<tr><th scope=“row” style=“vertical-align:top”'c'
<>td> 日期和時間格式化為 "%ta %tb %td %tT %tZ %tY"
,例如 。 "Sun Jul 20 16:17:00 EDT 1969"
</tbody></table>
任何未明確定義為日期/時間轉換後綴的字元都是非法的,並保留給未來的擴充功能。
<h4> 旗標 </h4>
下表摘要說明支援的旗標。 y 表示指定的自變數類型支援旗標。
<table class=“striped”><caption style=“display:none”>genConv</caption><thead><tr><th scope=“col” style=“vertical-align:bottom”> Flag <th scope=“col” style=“vertical-align:bottom”> General <th scope=“col” style=“vertical-align:bottom”> Character <th scope=“col” style=“vertical-align:bottom”> Integral <th scope=“col” style=“vertical-align:bottom”> Floating Point <th scope=“col” style=”vertical-align:bottom“ Date/Time <th scope=”col“> style=”vertical-align:bottom“> Description </thead><tbody><tr><th scope=”row“> '-' <td style=”text-align:center; vertical-align:top“> y <td style=”text-align:center; vertical-align:top“> y <td style=”text-align:center; vertical-align:top“ y <td style=”text-align:center; vertical-align:top“>> y <td style=”text-align:center;vertical-align:top“> y <td> 結果會靠左對齊。
<tr><th scope=“row”> '#' <td style=“text-align:center; vertical-align:top”> y<sup>1</sup<>td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> y<sup 3</sup<>>td style=“text-align:center; vertical-align:top”> y <td style=“text-align:center; vertical-align:top”> - <td> 結果應該使用轉換相依的替代窗體
<tr><th scope=“row”> '+' <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> y sup 4</sup>><td style=“text-align:center; vertical-align:top>” y<< td style=“text-align:center; vertical-align:top”> - <td> 結果一律會包含符號
<tr><th scope=“row”> ' ' <td style=“text-align:center;vertical-align:top“> - <td style=”text-align:center; vertical-align:top“> - <td style=”text-align:center; vertical-align:top“> y sup 4</sup><>td style=”text-align:center; vertical-align:top“ y<< td style=”text-align:center; vertical-align:top>“> - <td> 結果會包含正值的前置空間
<tr><th scope=“row”> '0' <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> y td style=“text-align:center; vertical-align:top” y <<td style=“text-align:center; vertical-align:top>”> - <td> 結果會以零填補
<tr><th scope=“row”> ',' <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top” y sup>2</sup><td style=“text-align:center; vertical-align:top”>> y<<sup>5</sup><td style=“text-align:center; vertical-align:top”> - <td>結果將包含地區設定特定的 java.text.DecimalFormatSymbols#getGroupingSeparator 群組分隔符<tr th scope=“row”> '(' <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top”> - <td style=“text-align:center; vertical-align:top” y sup>4</sup><td style=“text-align:center; vertical-align:top”>> y<<sup>5</sup><td><style=“text-align:center”> - <td> 結果會以括弧括住負數
</tbody></table>
<sup>1</sup> 取決於的定義 Formattable
。
<sup>2</sup> 僅適用於 'd'
轉換。
<sup>3</sup> 僅適用於 'o'
、 'x'
和 'X'
轉換。
<sup>4</sup> 針對'd'
套用至 java.math.BigInteger BigInteger
、'x'
'o'
'X'
、、、short
、 int
和 、 long
和 、 和 Long
的 、、 Short
和 Integer
所套用或'd'
套用byte
Byte
的轉換。
<sup>5</sup> 僅適用於 'e'
、 'E'
、 'f'
、 'g'
和 'G'
轉換。
未明確定義為旗標的任何字元都是非法的,並保留給未來的擴充功能。
<h4> 寬度 </h4>
寬度是要寫入輸出的字元數下限。 對於行分隔符轉換,寬度不適用;如果提供,則會擲回例外狀況。
<h4> 精確度 </h4>
針對一般自變數類型,精確度是要寫入輸出的最大字元數。
對於浮點轉換 'a'
、 'A'
、 'e'
、 'E'
和 'f'
有效位數,是基數點之後的數字數。 如果轉換為 'g'
或 'G'
,則有效位數是四捨五入後產生的大小數字總數。
對於字元、整數和日期/時間自變數類型和百分比和行分隔符轉換,有效位數不適用:如果提供有效位數,則會擲回例外狀況。
<h4> 自變數索引 </h4>
自變數索引是指出自變數清單中自變數位置的十進位整數。 第一個自變數由 「1$
參考,第二個自變數由」2$
等參考。
依位置參考自變數的另一種方式是使用 '<'
('\u003c'
) 旗標,這會導致重新使用先前格式規範的自變數。 例如,下列兩個語句會產生相同的字串:
<blockquote>
Calendar c = ...;
String s1 = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
String s2 = String.format("Duke's Birthday: %1$tm %<te,%<tY", c);
</blockquote>
<hr><h3>“detail”>Details</h3>
本節旨在提供格式設定的行為詳細數據,包括條件和例外狀況、支持的數據類型、當地語系化,以及旗標、轉換和數據類型之間的互動。 如需格式化概念的概觀,請參閱摘要
未明確定義為轉換、日期/時間轉換後綴或旗標的任何字元都是非法的,並保留給未來的擴充功能。 在格式字串中使用這類字元會導致 UnknownFormatConversionException
擲回 或 UnknownFormatFlagsException
。
如果格式規範包含具有無效值的寬度或有效位數,否則為不支援, IllegalFormatWidthException
則會分別擲回 或 IllegalFormatPrecisionException
。
如果格式規範包含不適用於對應自變數的轉換字元, IllegalFormatConversionException
則會擲回 。
所有指定的例外狀況都可以由的任何format
方法Formatter
以及 和 format
等String#format(String,Object...) String.format
java.io.PrintStream#printf(String,Object...) PrintStream.printf
任何便利方法擲回。
如果是類別 [一般]、[字元]、[數位]、[整數] 和 [日期/時間] 轉換,除非另有指定,否則自變數 arg 為 null
,則結果為 “null
”。
以大寫字元表示的轉換(例如'B'
,、'H'
、、'C'
'S'
、、'E'
'X'
、'G'
、 'A'
和 'T'
),與對應小寫轉換字元的轉換字元相同,不同之處在於結果會根據佔位java.util.Locale Locale
規則轉換成大寫。 如果沒有指定明確的地區設定,請在 實體的建構或做為其方法調用的參數,則會 java.util.Locale.Category#FORMAT default locale
使用 。
<h4>“dgen”>General</h4>
下列一般轉換可以套用至任何自變數類型:
<table class=“striped”><caption style=“display:none”>dgConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”<'b'
>td style=“vertical-align:top”>'\u0062'
<td> 產生由 傳回Boolean#toString(boolean)
的 “true
” 或 “false
” 。
如果自變數為 null
,則結果為 “false
” ” 如果自變數為 boolean
或 Boolean
,則結果為 所傳回的 String#valueOf(boolean) String.valueOf()
字串。 否則,結果是 “true
” 。
'#'
如果指定 旗標,FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'B'
td style=“vertical-align:top”'\u0042'
<>td> 大寫變體。'b'
<tr><th scope=“row” style=“vertical-align:top”>'h'
<td style=“vertical-align:top”'\u0068'
><td> 產生代表物件哈希碼值的字符串。
藉由叫 Integer.toHexString(arg.hashCode())
用 來取得結果。
'#'
如果指定 旗標,FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'H'
td style=“vertical-align:top”'\u0048'
<>td> 大寫變體。'h'
<tr><th scope=“row” style=“vertical-align:top”>'s'
<td style=“vertical-align:top”'\u0073'
><td> 產生字符串。
如果自變數實作 Formattable
,則會叫用其 Formattable#formatTo formatTo
方法。 否則,藉由叫用自變數的 toString()
方法來取得結果。
'#'
如果指定 旗標,而且自變數不是 Formattable
,FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'S'
td style=“vertical-align:top”'\u0053'
<>td> 大寫變體。's'
</tbody></table>
下列 「dFlags」> 旗標適用於一般轉換:
<table class=“striped”><caption style=“display:none”>dFlags</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'-'
<td style=“vertical-align:top”'\u002d'
><td> Left 讓輸出對齊。 空格 ('\u0020'
) 會視需要新增在轉換值結尾處,以填滿字段的最小寬度。 如果未提供寬度, MissingFormatWidthException
則會擲回 。 如果未指定此旗標,則輸出會靠右對齊。
<tr><th scope=“row” style=“vertical-align:top”>'#'
<td style=“vertical-align:top”'\u0023'
><td> 需要輸出使用替代窗體。 表單的定義是由轉換所指定。
</tbody></table>
“genWidth”>寬度是要寫入輸出的字元數下限。 如果轉換值的長度小於寬度,則輸出會以 ('\u0020'
) 填補' '
,直到字元總數等於寬度為止。 邊框間距預設在左側。 '-'
如果已指定 旗標,則填補會位於右側。 如果未指定寬度,則沒有最小值。
有效位數是要寫入輸出的最大字元數。 有效位數會在寬度之前套用,因此即使寬度大於有效位數,輸出也會截斷 precision
為字元。 如果未指定有效位數,則字元數沒有明確的限制。
<h4>“dchar”>Character</h4>
此轉換可以套用至 char
和 Character
。 它也可以套用至傳回 時的類型byte
、Byte
、 short
和 Short
。Character#isValidCodePoint
true
int
Integer
如果傳回 false
, IllegalFormatCodePointException
則會擲回 。
<table class=“striped”><caption style=“display:none”>charConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'c'
<td style=“vertical-align:top”'\u0063'
><td> 將自變數格式化為 Unicode 字元,如 Unicode 字符表示法中所述。 在自變數代表增補字元的情況下,這可能是一個以上的16位 char
。
'#'
如果指定 旗標,FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'C'
td style=“vertical-align:top”'\u0043'
<>td> 大寫變體。'c'
</tbody></table>
'-'
適用於一般轉換定義的旗標。 '#'
如果指定 旗標,FormatFlagsConversionMismatchException
則會擲回 。
寬度定義為一般轉換。
有效位數不適用。 如果指定有效位數, IllegalFormatPrecisionException
則會擲回 。
<h4>“dnum”>Numeric</h4>
數值轉換分為下列類別:
<老>
<li>b Byte、Short、Integer 和 Long</b><li b BigInteger</b><li<>>b>Float and Double</b li>><<b>BigDecimal</b><></ol><>
數值類型會根據下列演算法進行格式化:
<b>“L10nAlgorithm”> 數位當地語系化演算法</b>
取得整數部分、小數部分和指數的數字之後,會套用下列轉換:
<老>
<li> 字串中的每個數位字元都會由相對於目前地區設定的 java.text.DecimalFormatSymbols#getZeroDigit() 零位數z 取代為地區設定特定的數位;即 d - '0'
+ z.
<li> 如果存在小數分隔符,則會取代地區設定特定的java.text.DecimalFormatSymbols#getDecimalSeparator 小數分隔符。
<li> 如果 ','
指定了 “'\u002c'
L10nGroup”> 旗標,則會藉由掃描字串的整數部分,從最小有效位數到最大有效位數,並以地區設定的 java.text.DecimalFormat#getGroupingSize#getGroupingSize() 群組大小所定義的間隔插入地區設定特定的 java.text.DecimalFormat#getGroupingSize() 分隔符來插入。
<li> 如果 '0'
指定旗標,則會在符號字元後面插入地區設定特定的 java.text.DecimalFormatSymbols#getZeroDigit() 零位數,如果有的話,並在第一個非零數位之前插入零位數,直到字符串的長度等於所要求的字段寬度為止。
<li> 如果值為負值且 '('
指定旗標,則會 '('
在前面加上 ('\u0028'
) 並附加 一個 ')'
('\u0029'
)。
<li> 如果值為負數(或浮點負零),且'('
未指定旗標,則會在前面加上 ('-'
'\u002d'
)。
<li> 如果 '+'
指定旗標,且值為正數或零(或浮點正零),則會 '+'
在前面加上 ('\u002b'
) 。
</老>
如果值為 NaN 或正無限大,則會分別輸出常值字串 “NaN” 或 “Infinity”。 如果值為負無限大,則如果 '('
指定旗標,則輸出會是 “(Infinity)”,否則輸出會是 “-Infinity”。 這些值並未當地語系化。
“dnint”><b> Byte、Short、Integer 和 Long </b>
下列轉換可以套用至 byte
、Byte
、short
、Short
、 int
和 Integer
long
與 Long
。
<table class=“striped”><caption style=“display:none”>IntConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'d'
<td style=“vertical-align:top”'\u0064'
><td> 將自變數格式化為十進制整數。 已套用當地語系化演算法。
如果指定旗標, '0'
且值為負數,則零填補會在符號之後發生。
如果指定 旗標,'#'
FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”>'o'
<td style=“vertical-align:top”'\u006f'
><td> 將自變數格式化為基底八中的整數。 不會套用當地語系化。
如果 x 為負數,則結果會是將 2<sup n</sup>> 新增至值所產生的不帶正負號值,其中 n
是 Byte#SIZE Byte、Short#SIZE Short、Integer#SIZE Integer 或 Long#SIZE Long 類別中靜態SIZE
字段所傳回的位數。
如果指定 旗標, '#'
則輸出一律會以基度指標 '0'
開頭。
'0'
如果指定旗標,則輸出會以前置零填補到字段寬度,並遵循任何符號指示。
如果 '('
為 , '+'
則為 ' ',或 ','
會提供 旗標,然後 FormatFlagsConversionMismatchException
會擲回 。
<tr><th scope=“row” style=“vertical-align:top”>'x'
<td style=“vertical-align:top”'\u0078'
><td> 將自變數格式化為基底十六中的整數。 不會套用當地語系化。
如果 x 為負數,則結果會是將 2<sup n</sup>> 新增至值所產生的不帶正負號值,其中 n
是 Byte#SIZE Byte、Short#SIZE Short、Integer#SIZE Integer 或 Long#SIZE Long 類別中靜態SIZE
字段所傳回的位數。
如果指定 旗標, '#'
則輸出一律會以基度指標 "0x"
開頭。
如果指定旗標, '0'
則輸出會填補為字段寬度,在基數指標或符號後面加上前置零(如果有的話)。
如果 '('
指定、 ' '
、 '+'
或 ','
旗標, FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'X'
td style=“vertical-align:top”'\u0058'
<>td> 大寫變體。'x'
代表數位的整個字串將會轉換成 String#toUpperCase 大寫,包括 'x'
(如果有的話) 和所有十六進位數位'a'
- 'f'
()。'\u0061'
- '\u0066'
</tbody></table>
如果轉換為、 或和 與兩者'0'
都提供和旗標,則結果會包含基數指標(針對八進位和"0x"
或"0X"
十六進位),某些零數('0'
以寬度為基礎),以及值。'X'
'x'
'o'
'#'
'-'
如果未指定 旗標,則會在符號之前進行空格填補。
下列 「intFlags」> 旗標適用於數值整數轉換:
<table class=“striped”><caption style=“display:none”>intFlags</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'+'
<td style=“vertical-align:top”'\u002b'
><td> 需要輸出包含所有正數的正負號。 如果未指定此旗標,則只有負值會包含正負號。
如果同時 '+'
指定與 ' '
旗標, IllegalFormatFlagsException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>' '
td style=“vertical-align:top”'\u0020'
<>td> 需要輸出包含非負值的單一額外空間 ('\u0020'
)。
如果同時 '+'
指定與 ' '
旗標, IllegalFormatFlagsException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”>'0'
<td style=“vertical-align:top”'\u0030'
><td> 要求輸出以前置 java.text.DecimalFormatSymbols#getZeroDigit 零到在轉換 NaN 或無限大時以外的任何符號或弧度指標之後的最小字段寬度。 如果未提供寬度, MissingFormatWidthException
則會擲回 。
如果同時 '-'
指定與 '0'
旗標, IllegalFormatFlagsException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”>','
<td style=“vertical-align:top”'\u002c'
><td> 需要輸出包含地區設定特定的 java.text.DecimalFormatSymbols#getGroupingSeparator 群組分隔符,如本地化演算法的“group” 區段所述。
<tr><th scope=“row” style=“vertical-align:top”'('
<>td style=“vertical-align:top”'\u0028'
<>td> 需要輸出前面加上 a '('
('\u0028'
) 並將 ('\u0029'
) 附加')'
至負值。
</tbody></table>
如果未指定 「intdFlags」> 旗標,則預設格式如下:
<ul>
<li> 輸出在 li> 負數內的width
<右對齊開頭為 a '-'
('\u002d'
)
<li> 正數和零不包含正負號或額外的前置空格
<li> 未包含分組分隔符
</ul>
“intWidth”> 寬度是要寫入輸出的字元數下限。 這包括任何符號、數位、分組分隔符、弧度指標和括號。 如果轉換值的長度小於寬度,則輸出會以空格 ('\u0020'
) 填補,直到字元總數等於寬度為止。 邊框間距預設在左側。 如果 '-'
指定旗標,則填補會位於右側。 如果未指定寬度,則沒有最小值。
有效位數不適用。 如果指定有效位數, IllegalFormatPrecisionException
則會擲回 。
“dnbint”><b> BigInteger </b>
下列轉換可能會套用至 java.math.BigInteger
。
<table class=“striped”><caption style=“display:none”>bIntConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'d'
<td style=“vertical-align:top”'\u0064'
><td> 需要將輸出格式化為十進制整數。 已套用當地語系化演算法。
'#'
如果已指定 FormatFlagsConversionMismatchException
旗標,則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”>'o'
<td style=“vertical-align:top”'\u006f'
><td> 需要將輸出格式化為基底 8 中的整數。 不會套用當地語系化。
如果 x 為負數,則結果會是開頭 '-'
為 ('\u002d'
) 的帶正負號值。 此類型允許帶正負號的輸出,因為與基本類型不同,不需要假設明確的數據類型大小,就無法建立不帶正負號的對等專案。
如果 x 為正數或零,並指定旗標,'+'
則結果會以 ('\u002b'
) 開頭'+'
。
如果指定旗標, '#'
則輸出一律會以前置詞 '0'
開頭。
'0'
如果指定旗標,則輸出會以前置零填補到字段寬度,並遵循任何符號指示。
如果指定 旗標,','
FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”>'x'
<td style=“vertical-align:top”'\u0078'
><td> 要求輸出在基底 16 中格式化為整數。 不會套用當地語系化。
如果 x 為負數,則結果會是開頭 '-'
為 ('\u002d'
) 的帶正負號值。 此類型允許帶正負號的輸出,因為與基本類型不同,不需要假設明確的數據類型大小,就無法建立不帶正負號的對等專案。
如果 x 為正數或零,並指定旗標,'+'
則結果會以 ('\u002b'
) 開頭'+'
。
如果指定 旗標, '#'
則輸出一律會以基度指標 "0x"
開頭。
如果指定旗標, '0'
則輸出會填補為字段寬度,在基數指標或符號後面加上前置零(如果有的話)。
如果指定 旗標,','
FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'X'
td style=“vertical-align:top”'\u0058'
<>td> 大寫變體。'x'
代表數位的整個字串將會轉換成 String#toUpperCase 大寫,包括 'x'
(如果有的話) 和所有十六進位數位'a'
- 'f'
()。'\u0061'
- '\u0066'
</tbody></table>
如果轉換為 'o'
、、 或 'X'
和 和 兩者'#'
'0'
都提供 和 旗標,則結果會包含基底指標(針對八進位和"0x"
或"0X"
十六進位),某些零數('0'
以寬度為基礎'x'
),以及值。
如果指定旗標, '0'
且值為負數,則零填補會在符號之後發生。
'-'
如果未指定 旗標,則會在符號之前進行空格填補。
針對 Byte、Short、Integer 和 Long 定義的所有旗標都會套用。 未指定旗標時的預設行為與 Byte、Short、Integer 和 Long 相同。
寬度的規格與針對 Byte、Short、Integer 和 Long 所定義的相同。
有效位數不適用。 如果指定有效位數, IllegalFormatPrecisionException
則會擲回 。
“dndec”><b> Float and Double</b>
下列轉換可能會套用至float
、 Float
double
和 Double
。
<table class=“striped”><caption style=“display:none”>floatConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”<>'e'
td style=“vertical-align:top”'\u0065'
<>td> 需要使用 “scientific”>computerized 科學表示法來格式化輸出。 已套用當地語系化演算法。
大小 m 的格式取決於其值。
如果 m 為 NaN 或無限,則常值字串 「NaN」 或 「Infinity」 將會分別輸出。 這些值並未當地語系化。
如果 m 是正零或負零,則指數會是 "+00"
。
否則,結果是字串,表示自變數的正負號和大小(絕對值)。 當地語系化演算法會說明符號的格式設定。 大小 m 的格式取決於其值。
讓 n 成為唯一整數,讓 10<sup n</sup>> <= m < 10 sup>n+1</sup>;然後讓 a 成為 m 和 10<<sup n</sup>> 的數學確切商數,讓 1 <= a <'e'
),後面接著指數的正負號,後面接著 n 表示為十進位整數, 由方法 Long#toString(long, int)
產生,且以零填補以包含至少兩位數。
m 分數部分的結果中位數或 等於有效位數。 如果未指定合法位數,則預設值為 6
。 如果有效位數小於在 或 Double#toString(double)
所傳回Float#toString(float)
字串中小數點之後出現的位數,則會使用java.math.RoundingMode#HALF_UP四捨五入演算法來四捨五入值。 否則,可能會附加零以達到有效位數。 針對值的正式表示法,請視情況使用 Float#toString(float)
或 Double#toString(double)
。
','
如果指定 旗標,FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'E'
td style=“vertical-align:top”'\u0045'
<>td> 大寫變體。'e'
指數符號將是大寫地區設定特定的 java.text.DecimalFormatSymbols#getExponentSeparator 指數分隔符(例如 'E'
)。
<tr><th scope=“row” style=“vertical-align:top”>'g'
<td style=“vertical-align:top”'\u0067'
><td> 需要以一般科學表示法格式化輸出,如下所述。 已套用當地語系化演算法。
精確度四捨五入之後,所產生之大小 m 的格式取決於其值。
如果 m 大於或等於 10<sup-4</sup>>,但小於 10<sup>precision</sup>,則會以十進位格式表示。
如果 m 小於 10<sup-4<>/sup> 或大於或等於 10<sup precision</sup>>,則會以計算機化科學表示法表示。
m 中的有效位數總數等於有效位數。 如果未指定合法位數,則預設值為 6
。 如果有效位數為 0
,則會將其設為 1
。
如果指定 旗標,'#'
FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'G'
td style=“vertical-align:top”'\u0047'
<>td> 大寫變體。'g'
<tr><th scope=“row” style=“vertical-align:top”>'f'
<td style=“vertical-align:top”td> 需要使用 “decimal”<>'\u0066'
>decimal 格式來格式化輸出。 已套用當地語系化演算法。
結果是字串,表示自變數的正負號和大小(絕對值)。 當地語系化演算法會說明符號的格式設定。 大小 m 的格式取決於其值。
如果 m NaN 或無限,則常值字串 「NaN」 或 「Infinity」 會分別輸出。 這些值並未當地語系化。
大小會格式化為 m 的整數部分,沒有前置零,後面接著小數分隔符,後面接著代表 m 小數部分的一個或多個十進位數。
m 分數部分的結果中位數或 等於有效位數。 如果未指定合法位數,則預設值為 6
。 如果有效位數小於在 或 Double#toString(double)
所傳回Float#toString(float)
字串中小數點之後出現的位數,則會使用java.math.RoundingMode#HALF_UP四捨五入演算法來四捨五入值。 否則,可能會附加零以達到有效位數。 針對值的正式表示法,請視情況使用 Float#toString(float)
或 Double#toString(double)
。
<tr><th scope=“row” style=“vertical-align:top”>'a'
<td style=“vertical-align:top”'\u0061'
><td> 需要以十六進位指數形式格式化輸出。 不會套用當地語系化。
結果是字串,表示自變數 x 的正負號和大小(絕對值)。
如果 x 為負數或負零值,則結果會以 ('\u002d'
) 開頭'-'
。
如果 x 為正數或正零值,並指定旗標,'+'
則結果會以 ('\u002b'
) 開頭'+'
。
大小 m 的格式取決於其值。
<ul>
<li> 如果值為 NaN 或無限,則常值字串 “NaN” 或 “Infinity” 會分別輸出。
<li> 如果 m 為零,則表示字串 "0x0.0p0"
。
<li> 如果 m 是 double
具有正規化表示法的值,則會使用子字串來表示正負號和指數字段。 符號是以字元 "0x1."
表示,後面接著其餘符號的十六進位表示法,以分數表示。 指數以 ('\u0070'
) 表示'p'
,後面接著不偏不偏指數的十進位字串,如同叫用指數值所產生的Integer#toString(int) Integer.toString
一樣。 如果指定有效位數,則會將值四捨五入為指定的十六進位數位數。
<li 如果 m 是具有次正規表示的值,則除非指定有效位數在範圍 1 到 12,包含內含中,否則會以字元'0x0.'
表示,後面接著其餘符號的十六進位表示法,以分數表示,以及 以 'p-1022'
表示的指數。double
> 如果有效位數在間隔 [1, 12],次自然值會正規化,使其以字元 '0x1.'
開頭,四捨五入為有效位數的十六進位數位,並據以調整指數。 請注意,在非正負號中必須至少有一個非零位數。
</ul>
'('
如果指定或 ','
旗標,FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'A'
td style=“vertical-align:top”'\u0041'
<>td> 大寫變體。'a'
代表數位的整個字串將會轉換成大寫,包括 'x'
() 和 'p'
('\u0070'
以及所有十六進位數位'f'
- 'a'
('\u0061'
'\u0066'
- )。'\u0078'
</tbody></table>
針對 Byte、Short、Integer 和 Long 定義的所有旗標都會套用。
'#'
如果指定旗標,則小數分隔符一律會存在。
如果未指定任何 「floatdFlags」> 旗標,則預設格式如下:
<ul>
<li> 輸出在 li 負數內<width
右對齊,開頭為 li>> 正數'-'
<,正零不包含正負號或額外的前置空格
<li> 未包含分組分隔符
<li> 小數分隔符只會在數位後面出現
</ul>
“floatDWidth”> 寬度是要寫入輸出的字元數下限。 這包括任何符號、數位、分組分隔符、小數分隔符、指數符號、弧度指標、括號,以及代表無限大和 NaN 的字串。 如果轉換值的長度小於寬度,則輸出會以空格 ('\u0020'
) 填補,直到字元總數等於寬度為止。 邊框間距預設在左側。 '-'
如果指定旗標,則填補會位於右側。 如果未指定寬度,則沒有最小值。
如果 「floatDPrec」> 轉換為 'e'
或 'f'
,'E'
則有效位數是小數分隔符後面的位數。 如果未指定合法位數,則會假設 6
為 。
如果轉換為 'g'
或 'G'
,則有效位數是四捨五入后所產生大小中的有效位數總數。 如果未指定合法位數,則預設值為 6
。 如果有效位數為 0
,則會將其設為 1
。
如果轉換為 'a'
或 'A'
,則有效位數是基數點之後的十六進位數位數。 如果未提供有效位數,則傳 Double#toHexString(double)
回的所有數位都會輸出。
“dnbdec”><b> BigDecimal </b>
可能會套用 java.math.BigDecimal BigDecimal
下列轉換。
<table class=“striped”><caption style=“display:none”>floatConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'e'
<td style=“vertical-align:top”td> 需要使用 “bscientific”<>'\u0065'
>computerized 科學表示法來格式化輸出。 已套用當地語系化演算法。
大小 m 的格式取決於其值。
如果 m 是正零或負零,則指數會是 "+00"
。
否則,結果是字串,表示自變數的正負號和大小(絕對值)。 當地語系化演算法會說明符號的格式設定。 大小 m 的格式取決於其值。
讓 n 成為唯一整數,讓 10<sup n</sup>> <= m < 10 sup>n+1</sup>;然後讓 a 成為 m 和 10<<sup n</sup>> 的數學確切商數,讓 1 <= a <'e'
('\u0065'
),後面接著指數符號的正負號,後面接著 n 表示為十進位整數,方法所產生Long#toString(long, int)
: 和 零填補,以包含至少兩位數。
m 分數部分的結果中位數或 等於有效位數。 如果未指定合法位數,則預設值為 6
。 如果有效位數小於小數點右邊的數字數,則會使用java.math.RoundingMode#HALF_UP四捨五入演算法來四捨五入值。 否則,可能會附加零以達到有效位數。 針對值的正式表示法,請使用 BigDecimal#toString()
。
','
如果指定 旗標,FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'E'
td style=“vertical-align:top”'\u0045'
<>td> 大寫變體。'e'
指數符號將是 'E'
('\u0045'
)。
<tr><th scope=“row” style=“vertical-align:top”>'g'
<td style=“vertical-align:top”'\u0067'
><td> 需要以一般科學表示法格式化輸出,如下所述。 已套用當地語系化演算法。
精確度四捨五入之後,所產生之大小 m 的格式取決於其值。
如果 m 大於或等於 10<sup-4</sup>>,但小於 10<sup>precision</sup>,則會以十進位格式表示。
如果 m 小於 10<sup-4<>/sup> 或大於或等於 10<sup precision</sup>>,則會以計算機化科學表示法表示。
m 中的有效位數總數等於有效位數。 如果未指定合法位數,則預設值為 6
。 如果有效位數為 0
,則會將其設為 1
。
如果指定 旗標,'#'
FormatFlagsConversionMismatchException
則會擲回 。
<tr><th scope=“row” style=“vertical-align:top”<>'G'
td style=“vertical-align:top”'\u0047'
<>td> 大寫變體。'g'
<tr><th scope=“row” style=“vertical-align:top”>'f'
<td style=“vertical-align:top”td> 需要使用 “bdecimal”<>'\u0066'
>decimal 格式來格式化輸出。 已套用當地語系化演算法。
結果是字串,表示自變數的正負號和大小(絕對值)。 當地語系化演算法會說明符號的格式設定。 大小 m 的格式取決於其值。
大小會格式化為 m 的整數部分,沒有前置零,後面接著小數分隔符,後面接著代表 m 小數部分的一個或多個十進位數。
m 分數部分的結果中位數或 等於有效位數。 如果未指定合法位數,則預設值為 6
。 如果有效位數小於小數點右邊的數字數,則會使用java.math.RoundingMode#HALF_UP四捨五入演算法來四捨五入值。 否則,可能會附加零以達到有效位數。 針對值的正式表示法,請使用 BigDecimal#toString()
。
</tbody></table>
針對 Byte、Short、Integer 和 Long 定義的所有旗標都會套用。
'#'
如果指定旗標,則小數分隔符一律會存在。
未指定旗標時的預設行為與 Float 和 Double 相同。
寬度和精確度的規格與針對 Float 和 Double 所定義的相同。
<h4>“ddt”>Date/Time</h4>
此轉換可套用至 long
、Long
、 Calendar
Date
和<TemporalAccessor TemporalAccessor
table class=“striped”<>caption style=“display:none”>DTConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'t'
<td style=“vertical-align:top”>'\u0074'
<td> Prefix for date and time conversion characters. <tr><th scope=“row” style=“vertical-align:top”<>'T'
td style=“vertical-align:top”'\u0054'
<>td> 大寫變體。't'
</tbody></table>
下列日期和時間轉換字元後綴是針對 和 'T'
轉換所't'
定義。 這些類型與 GNU 和 POSIX 所定義的類型類似,但與 POSIX date
strftime(3c)
所定義的類型完全相同。 提供其他轉換類型來存取 Java 特定的功能(例如 'L'
,在第二秒內為毫秒)。
下列轉換字元用於格式化時間:
<table class=“striped”><caption style=“display:none”>time</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'H'
<td style=“vertical-align:top”><'\u0048'
td> Hour of the day for the 24 hour clock, formatd as two digits with a leading zero as the leading zero. as. 00 - 23
00
corresponds to midnight.
<tr><th scope=“row” style=“vertical-align:top”><'I'
td style=“vertical-align:top”>'\u0049'
<td> Hour for the 12-hour clock, formatd as two digits with a leading zero as the 01 - 12
leading zero. 01
對應到一點鐘(上午或下午)。
<tr><th scope=“row” style=“vertical-align:top”>'k'
<td style=“vertical-align:top”><'\u006b'
td> Hour of the day for the 24 hour clock, e. 0 - 23
0
corresponds to midnight.
<tr><th scope=“row” style=“vertical-align:top”>'l'
<td style=“vertical-align:top”><'\u006c'
td> Hour for the 12-hour, 即 1 - 12
1
. corresponds to one o'clock (上午或下午)。
<tr><th scope=“row” style=“vertical-align:top”><'M'
td style=“vertical-align:top”>'\u004d'
<td> Minute within the hour formatted as two digits with a leading zero as a 00 - 59
leading zero.
<tr><th scope=“row” style=“vertical-align:top”>'S'
<td style=“vertical-align:top”><'\u0053'
td> Seconds within the minute, formatted as two digits with a leading zero with a leading zero as requiredy, 亦即 00 - 60
(“”60
is a special value to support leap seconds.
<tr><th scope=“row” style=“vertical-align:top”<>'L'
td style=“vertical-align:top”'\u004c'
<>td> 毫秒內,第二個格式化為三位數,並視需要前置零,亦即 。 000 - 999
<tr><th scope=“row” style=“vertical-align:top”><'N'
td style=“vertical-align:top”>'\u004e'
<td> Nanosecond, formatd as 9 digits with leading zeros as leading zero. 000000000 - 999999999
此值的有效位數受限於基礎操作系統或硬體的解析度。
<tr><th scope=“row” style=“vertical-align:top”<>'p'
td style=“vertical-align:top”'\u0070'
<>td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings morning or afternoon marker in lower case, 例如“”am
或 “pm
”。 使用轉換前置詞 'T'
會將此輸出強制為大寫。 (請注意, 'p'
會產生小寫輸出。這與產生大寫輸出的 GNU date
和 POSIX strftime(3c)
不同。
<tr><th scope=“row” style=“vertical-align:top”'z'
<>td style=“vertical-align:top”'\u007a'
<>td>RFC 822 style numeric time zone offset from GMT,例如 。 -0800
此值會視需要針對日光節約時間進行調整。 針對 long
, Long
和 Date
使用的時區是這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。
<tr><th scope=“row” style=“vertical-align:top”>'Z'
<td style=“vertical-align:top”'\u005a'
><td> 代表時區縮寫的字符串。 此值會視需要針對日光節約時間進行調整。 針對 long
, Long
和 Date
使用的時區是這個 Java 虛擬機實例的 TimeZone#getDefault() 預設時區。 Formatter 的地區設定將會取代自變數的地區設定(如果有的話)。
<tr><th scope=“row” style=“vertical-align:top”'s'
<>td style=“vertical-align:top”>'\u0073'
<td> Seconds,自 1970 00:00:00
年 1 月 1 日 UTC 開始開始的 Epoch 開始,即Long.MIN_VALUE/1000
為 。Long.MAX_VALUE/1000
<tr><th scope=“row” style=“vertical-align:top”'Q'
<>td style=“vertical-align:top”'\u004f'
><td> 毫秒,自 1970 00:00:00
年 1 月 1 日 UTC 開始開始的 Epoch 開始,即Long.MIN_VALUE
為 。Long.MAX_VALUE
此值的有效位數受限於基礎操作系統或硬體的解析度。
</tbody></table>
下列轉換字元用於格式化日期:
<table class=“striped”><caption style=“display:none”>date</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”>'B'
<td style=“vertical-align:top”><'\u0042'
td> Locale-specific java.text.DateFormatSymbols#getMonths full month name, 例如 "January"
, 。 "February"
<tr><th scope=“row” style=“vertical-align:top”>'b'
<td style=“vertical-align:top”><'\u0062'
td> Locale-specific java.text.DateFormatSymbols#getShortMonths abbreviated month name, 例如 , 。 "Jan"
"Feb"
<tr><th scope=“row” style=“vertical-align:top”><'h'
td style=“vertical-align:top”>'\u0068'
<td> Same as 'b'
.
<tr><th scope=“row” style=“vertical-align:top”>'A'
<td style=“vertical-align:top”<>'\u0041'
td> Locale-specific full name of the java.text.DateFormatSymbols#getWeekdays day, 例如"Sunday"
,<"Monday"
tr><th scope=“row” style=“vertical-align:top”>'a'
<td style=“vertical-align:top”>'\u0061'
<td> Locale-specific short name of the java.text.DateFormatSymbols#getShortWeekdays day, 例如 "Sun"
, tr><"Mon"
<th scope=“row” style=“vertical-align:top”>'C'
<td style=“vertical-align:top”<>'\u0043'
td> 四位數年份除100
以 ,格式化為兩位數,並視需要將前置零格式化為兩位數, i.e. 00 - 99
<tr><th scope=“row” style=“vertical-align:top”><'Y'
td style=“vertical-align:top”>'\u0059'
<td> Year, formatted to least four digits with leading zeros as necessary, 例如0092
等於92
公曆的 CE。
<tr><th scope=“row” style=“vertical-align:top”<>'y'
td style=“vertical-align:top”'\u0079'
<>td> 去年最後兩位數,格式為前置零,亦即 。 00 - 99
<tr><th scope=“row” style=“vertical-align:top”><'j'
td style=“vertical-align:top”>'\u006a'
<td> Day of year, formatd as three digits with leading zeros as the Gregorian calendar. 001 - 366
001
會對應至年份的第一天。
<tr><th scope=“row” style=“vertical-align:top”>'m'
<td style=“vertical-align:top”><'\u006d'
td> Month, formatted as two digits with leading zeros as required, i. 01 - 13
where “01
” is the first month of the year and (“13
” is a special value to support calendars.
<tr><th scope=“row” style=“vertical-align:top”>'d'
<td style=“vertical-align:top”><'\u0064'
td> Day of month, formatd as two digits with leading zeros as the necessary, i. 01 - 31
where “01
” is the first day of the month.
<tr><th scope=“row” style=“vertical-align:top”>'e'
<td style=“vertical-align:top”><'\u0065'
td> Day of month, formatted as two digits, 例如 1 - 31
“1
” 是當月的第一天。
</tbody></table>
下列轉換字元用於格式化常見的日期/時間組合。
<table class=“striped”><caption style=“display:none”>composites</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”><'R'
td style=“vertical-align:top”>'\u0052'
<td> Time formatted for the 24-hour clock as<"%tH:%tM"
tr><th scope=“row” style=“vertical-align:top'T'
<>”td style=“vertical-align:top”'\u0054'
<>td> Time formatted for the 24-hour clock as ."%tH:%tM:%tS"
<tr><th scope=“row” style=“vertical-align:top”><'r'
td style=“vertical-align:top”>'\u0072'
<td> Time formatted for the 12-hour clock as ."%tI:%tM:%tS %Tp"
上午或下午標記 ('%Tp'
) 的位置可能依地區設定而定。
<tr><th scope=“row” style=“vertical-align:top”><'D'
td style=“vertical-align:top”>'\u0044'
<td> Date formatted as "%tm/%td/%ty"
.
<tr><th scope=“row” style=“vertical-align:top”>'F'
<td style=“vertical-align:top”><'\u0046'
td>ISO 8601 complete date formatted as ."%tY-%tm-%td"
<tr><th scope=“row” style=“vertical-align:top”>'c'
<td style=“vertical-align:top”><'\u0063'
td> Date and time formatted as "%ta %tb %td %tT %tZ %tY"
, 例如 。 "Sun Jul 20 16:17:00 EDT 1969"
</tbody></table>
'-'
適用於一般轉換定義的旗標。 '#'
如果指定 旗標,FormatFlagsConversionMismatchException
則會擲回 。
寬度是要寫入輸出的字元數下限。 如果轉換值的長度小於 width
,則輸出會以空格填補('\u0020'
)直到字元總數等於寬度為止。 邊框間距預設在左側。 '-'
如果指定旗標,則填補會位於右側。 如果未指定寬度,則沒有最小值。
有效位數不適用。 如果指定有效位數, IllegalFormatPrecisionException
則會擲回 。
<h4>“dper”>Percent</h4>
轉換不會對應至任何自變數。
<table class=“striped”><caption style=“display:none”>DTConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”'%'
<>td> 結果為常值 '%'
()'\u0025'
寬度是要寫入輸出的字元數下限,包括 '%'
。 如果轉換值的長度小於 width
,則輸出會以空格填補('\u0020'
)直到字元總數等於寬度為止。 邊框間距位於左側。 如果未指定寬度,則只會 '%'
輸出 。
'-'
適用於一般轉換定義的旗標。 如果提供任何其他旗標, FormatFlagsConversionMismatchException
則會擲回 。
有效位數不適用。 如果指定 IllegalFormatPrecisionException
有效位數,會擲回 。
</tbody></table>
<h4>“dls”>行分隔符</h4>
轉換不會對應至任何自變數。
<table class=“striped”><caption style=“display:none”>DTConv</caption><tbody>
<tr><th scope=“row” style=“vertical-align:top”><'n'
td> 平臺特定行分隔符,如 所System#lineSeparator()
傳回。
</tbody></table>
不適用旗標、寬度和精確度。 如果提供任何 IllegalFormatFlagsException
,則會分別擲回、 IllegalFormatWidthException
和 IllegalFormatPrecisionException
。
<h4>“dpos”>Argument Index</h4>
格式規範可以透過三種方式參考自變數:
<ul>
<當格式規範包含自變數索引時,會使用 li>Explicit indexing 。 自變數索引是指出自變數清單中自變數位置的十進位整數。 第一個自變數由 「1$
參考,第二個自變數由」2$
等參考。可以多次參考自變數。
例如:
<blockquote>
formatter.format("%4$s %3$s %2$s %1$s %4$s %3$s %2$s %1$s",
"a", "b", "c", "d")
// -> "d c b a d c b a"
</blockquote>
<當格式規範包含 ('<'
'\u003c'
) 旗標時,會使用 li>Relative indexing,這會導致重新使用先前格式規範的自變數。 如果沒有先前的自變數, MissingFormatArgumentException
則會擲回 。
<blockquote>
formatter.format("%s %s %<s %<s", "a", "b", "c", "d")
// -> "a b b b"
// "c" and "d" are ignored because they are not referenced
</blockquote>
<當格式規範不包含自變數索引或旗標時,會使用 li>一般索引。'<'
使用一般索引的每個格式規範都會將循序隱含索引指派給自變數清單,這與明確索引或相對索引所使用的索引無關。
<blockquote>
formatter.format("%s %s %s %s", "a", "b", "c", "d")
// -> "a b c d"
</blockquote>
</ul>
格式字串可能會使用所有形式的索引編製,例如:
<blockquote>
formatter.format("%2$s %s %<s %s", "a", "b", "c", "d")
// -> "b a a b"
// "c" and "d" are ignored because they are not referenced
</blockquote>
自變數數目上限受限於 Java 陣列的最大維度,如引用>Java&trade 所<定義;虛擬機規格</引用>。 如果自變數索引未對應至可用的自變數,則會 MissingFormatArgumentException
擲回 。
如果自變數比格式規範多,則會忽略額外的自變數。
除非另有指定,否則將自變數傳遞 null
至這個類別中的任何方法或建構函式將會導致 NullPointerException
擲回 。
已在1.5中新增。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
Formatter() |
建構新的格式器。 |
Formatter(File) |
使用指定的檔案建構新的格式器。 |
Formatter(File, Charset, Locale) |
使用指定的檔案、charset 和地區設定來建構新的格式器。 |
Formatter(File, String) |
使用指定的檔案和 charset 建構新的格式子。 |
Formatter(File, String, Locale) |
使用指定的檔案、charset 和地區設定來建構新的格式器。 |
Formatter(IAppendable) |
使用指定的目的地建構新的格式器。 |
Formatter(IAppendable, Locale) |
使用指定的目的地和地區設定來建構新的格式器。 |
Formatter(Locale) |
使用指定的地區設定建構新的格式器。 |
Formatter(PrintStream) |
使用指定的列印數據流建構新的格式器。 |
Formatter(Stream) |
使用指定的輸出數據流建構新的格式器。 |
Formatter(Stream, Charset, Locale) |
使用指定的輸出數據流、字元集和地區設定來建構新的格式器。 |
Formatter(Stream, String) |
使用指定的輸出數據流和 charset 建構新的格式器。 |
Formatter(Stream, String, Locale) |
使用指定的輸出數據流、字元集和地區設定來建構新的格式器。 |
Formatter(String) |
使用指定的檔名建構新的格式器。 |
Formatter(String, Charset, Locale) |
使用指定的檔名、charset 和地區設定,建構新的格式子。 |
Formatter(String, String) |
使用指定的檔名和 charset 建構新的格式器。 |
Formatter(String, String, Locale) |
使用指定的檔名、charset 和地區設定,建構新的格式子。 |
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
JniIdentityHashCode |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
JniPeerMembers |
printf 樣式格式字串的解釋器。 |
PeerReference |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 (繼承來源 Object) |
方法
Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
Close() |
關閉此格式器。 |
Dispose() |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
Dispose(Boolean) |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
Flush() |
排清此格式器。 |
Format(Locale, String, Object[]) |
使用指定的格式字串和自變數,將格式化字串寫入這個物件的目的地。 |
Format(String, Object[]) |
使用指定的格式字串和自變數,將格式化字串寫入這個物件的目的地。 |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
IoException() |
傳 |
JavaFinalize() |
當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。 (繼承來源 Object) |
Locale() |
傳回這個格式器建構所設定的地區設定。 |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
Out() |
傳回輸出的目的地。 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
ToArray<T>() |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
IJavaPeerable.Finalized() |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
IJavaPeerable.JniManagedPeerState |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
printf 樣式格式字串的解釋器。 (繼承來源 Object) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
printf 樣式格式字串的解釋器。 |
GetJniTypeName(IJavaPeerable) |
printf 樣式格式字串的解釋器。 |
FlushAsync(IFlushable) |
printf 樣式格式字串的解釋器。 |