格式化字符串可以使用 String . format ()及 System . out . printf (),也有常規數據類型格式化。
常規類型格式化
語法:字符串格式和參數生成格式化的新字符串。
format ( String format , Object .. args )
例如: String . format ("% s ,共跑了% d 圈","張三",5);
System. out. println(String. format("% s ,共跑了% d 圈","張三",5);∥多個格式化字符串不能賦值單個字符串變量。
//返回結果:"張三,共跑了5圈"
常規類型格式化
常規類型的格式轉化可應用於任何參數類型, 可以通過轉換符來實現。
常規類型的格式化轉換符
%b、%B, 結果被格式化為佈爾類型 ,如:true
%s、%S ,結果被格式化為字符串類型,如: "abcd"
%c、%C ,結果被格式化為字符類型 ,如:'a'
%d ,結果被格式化為十進制整數,如: 40
%o,結果被格式化為八進制整數,如: 11
%x、%X ,結果被格式化為十六進制整數,如: 4b1
%e,結果被格式化為用計算機科學記數法表示的十進制數, 1.700000e 01
%a,結果被格式化為帶有效位數和指數的十六進制浮點值, oX1. C000000000001P4
%n,結果為特定於平臺的行分隔符
%% ,結果為字面值%,如 %
實現不同類型的格式轉化。
public class StringFormat {
public static void main(String[] args) {
String str3 = String. format("%.2f", Math. PI); // 輸出小數點後兩位
System. out. println("π取兩位小數點: " str3);∥3.14
String str4= String. format("%o", 33); // 輸出 8 進制
System. out. println("33的 8 進制結果是: " str4);∥41
String str5 = String. format("%x", 33); // 輸出 16 進制
System. out. println("33 的16進制結果是: " str5);∥21
String str6= String. format("%e", 120000.1);
System. out. println("120000.1用科學計數法表示: " str6);∥1.200001e+05
String str7= String. format("%a", 40.0); // 輸出帶有效位數和指數的16進制浮點值
System. out. println("40.0 的 16 進制浮點值: " str7);
// 輸出百分號和數字,∥28
System. out. println(String. format("天才是由%d%%的靈感, %d%%的汗水 。", 1, 99));
}
}
使用轉換符時,還可以配合轉換符標識來控制輸出的格式。
'-' ,在最小寬度內左對齊,不可以與'0'填充標識同時使用。左對齊
("|%-5d|",15),|15 |
'# ',用於8進制和 16進制格式, 在8 進制前加一個0, 在 16 進制前加一個 0x,("%#o",99),0143,("% #x ",99),0x63,如果是浮點數則包含小數點,如果是16進制或8進制則添加ox或o。
' ' ,顯示數字的正負號,("|M|",99),|99 |,
為正數或者負數添加符號,("% d ",15), 15。
' ' ,在正數前加空格(與`/'相反), 在負數前加負號。在整數之前添加指定數量的空格。
'0' ,在不夠最小位數的結果前用0 填充,("d",99),0099。數字前面補0。
',',隻適用於 10 進制, 每三位數字用','分隔,表示千分位。以","對數字分組。("%, f ",9999.99),9999.990000
'(' ,用括號把負數括起來。("%( f ",-99.99),(99.990000),使用括號包含負數。
<,格式化前一個轉換符所描述的參數。
("% f 和%<3.2F,99.45),99.450000和99.45
$,被格式化的參數索引。("%1$ d ,%2$ s ",99," abc "),99, abc
使用標識控制字符串配合轉換符格式化字符串
public class StringFormat2 {.
public static void main(String[] args) {
String str1 = String. format("]", 123); // 讓字符串輸出的最大長度為5, 不足長度在前端補空格∥
System. out. println("輸出長度為 5 的字符串|" str1 "|");∥| 123|
String str2 = String. format("%-5d", 123); // 讓字符串左對齊
System. out. println("左對齊|" str2 "|");∥|123 |
String str3 = String. format("%#o", 33); // 在8 進制前加一個o;∥o41
System. out. println("33 的8 進制結果是: " str3);
String str4 = String. format("%#x", 33); // 在16 進制前加一個ox∥ox21
System. out. println("33 的16進制結果是: " str4);
String str5 = String. format("% d", 1); // 顯示數字正負號∥+1
System. out. println("我是正數: " str5);∥+1
String str6 = String. format("% d", -1); // 顯示數字正負號
System. out. println("我是負數: " str6);∥-1
String str7 = String. format("% d", 1); // 在正數前補一個空格∥ | 1丨
System. out. println("我是正數, 前面有空格" str7);
String str8 = String. format("% d", -1); // 在負數前補一個負號
System. out. println("我是負數, 前面有負號" str8);∥|-1|
String str9 = String. format("d", 12); // 讓字符串輸出的最大長度為 5,不足長度在前端補 0
System. out. println("前面不夠的數用 0 填充: " str9);∥00012
String str10 = String. format("%,d", 123456789); // 用逗號分隔數字
System. out. println("用逗號分隔: " str10);∥123,456,789
String str11 = String. format("%(d", 13); // 正數無影響
System. out. println("我是正數, 我沒有括號: " str11);//13
String str12 = String. format("%(d", -13); // 讓負數用括號括起來
System. out. println("我是負數, 我有括號的: " str12);//(13)
}
}
王小二買了4輛山地自行車花了15802元,請問平均一輛山地車多少元? 用“12,345.00 ¥”的格式輸出結果
public class StringFormat3{.
public static void main(String[] args) {
String str1 = String. format("%,5.2f", 15802/4);
System. out. println("平均買一輛山地車用:" str1 “ ¥”);∥用3,950.50¥
}
}