常規類型格式化轉化利用轉換符標識來控制輸出的轉換格式

2024年2月6日 21点热度 0人点赞

格式化字符串可以使用 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¥

}

}

轉換符的標識