常規類型的格式化
String 類的 format() 方法用於創建格式化的字符串以及連接多個字符串對像。熟悉 C 語言的讀者應該記得 C 語言的 sprintf() 方法,兩者有類似之處。format() 方法有兩種重載形式。
format(String format, Object... args)
該方法使用指定的字符串格式和參數生成格式化的新字符串。 新字符串始終使用本地語言環境。例如當前日期信息在中國語言環境中的表現形式為 “2007-10-27”,但是在其他國家有不同的表現形式。
format
:字符串格式。
args...
:字符串格式中由格式說明符引用的參數。如果還有格式說明符以外的參數,則忽略這些額外的參數。參數的數目是可變的,可以為 0。
format(Locale locale, String format, Object... args)
該方法使用指定的語言環境、字符串格式和參數生成一個格式化的新字符串。新字符串始終使用指定的語言環境。
locale
:指定的語言環境。
format
:字符串格式。
args...
:字符串格式中由格式說明符引用的參數。如果還有格式說明符以外的參數,則忽略這些額外的參數。參數的數目是可變的,可以為 0。
format() 方法中的字符串格式參數有很多種轉換符選項,例如:日期、整數、浮點數等:
%s |
字符串類型 |
"mingrisoft" |
%c |
字符類型 |
'm' |
%b |
布爾類型 |
true |
%d |
整數類型(十進制) |
99 |
%x |
整數類型(十六進制) |
FF |
%o |
整數類型(八進制) |
77 |
%f |
浮點類型 |
99.99 |
%a |
十六進制浮點類型 |
FF.35AE |
%e |
指數類型 |
9.38e+5 |
%g |
通用浮點類型(f和e類型中較短的) |
|
%h |
散列碼 |
|
%% |
百分比類型 |
% |
%n |
換行符 |
|
%tx |
日期與時間類型(x代表不同的日期與時間轉換符) |
|
使用各種轉換符實現不同數據類型到字符串的轉換:
- public static void main(String[] args) {
-
- String str=null;
-
-
- str=String.format("Hi,%s", "飛龍");
-
-
- System.out.println(str);
-
- System.out.printf("字母a的大寫是:%c %n", 'A');
-
- System.out.printf("3>7的結果是:%b %n", 3>7);
-
- System.out.printf("100的一半是:%d %n", 100/2);
-
- System.out.printf("100的16進制數是:%x %n", 100);
-
- System.out.printf("100的8進制數是:%o %n", 100);
-
- System.out.printf("50元的書打8.5折扣是:%f 元%n", 50*0.85);
-
- System.out.printf("上面價格的16進制數是:%a %n", 50*0.85);
-
- System.out.printf("上面價格的指數表示:%e %n", 50*0.85);
-
- System.out.printf(
- "上面價格的指數和浮點數結果的長度較短的是:%g %n", 50*0.85
- );
-
- System.out.printf("上面的折扣是%d%% %n", 85);
-
- System.out.printf("字母A的散列碼是:%h %n", 'A');
- }
輸出以下結果:
- Hi,飛龍
-
- 字母a的大寫是:A
-
- 3>7的結果是:false
-
- 100的一半是:50
-
- 100的16進制數是:64
-
- 100的8進制數是:144
-
- 50元的書打8.5折扣是:42.500000 元
-
- 上面價格的16進制數是:0x1.54p5
-
- 上面價格的指數表示:4.250000e+01
-
- 上面價格的指數和浮點數結果的長度較短的是:42.5000
-
- 上面的折扣是85%
-
- 字母A的散列碼是:41
這些字符串格式參數不但可以靈活將其他數據類型轉換成字符串,而且可以與各種標誌組合在一起,生成各種格式的字符串: