1. 程式人生 > >格式化字串-String.format()的使用【Java】

格式化字串-String.format()的使用【Java】

常規型別的格式化

String類的format()方法用於建立格式化的字串以及連線多個字串物件。熟悉C語言的同學應該記得C語言的sprintf()方法,兩者有類似之處。format()方法有兩種過載形式。

format(String format, Object… args) 新字串使用本地語言環境,制定字串格式和引數生成格式化的新字串。

format(Locale locale, String format, Object… args) 使用指定的語言環境,制定字串格式和引數生成格式化的字串。

顯示不同轉換符實現不同資料型別到字串的轉換,如下表

轉換符 說明 示例
%s 字串型別 "hello world"
%c 字元型別 'h'
%b 布林型別 false
%d 整數型別(十進位制) 668
%x 整數型別(十六進位制) 6ecd31
%o 整數型別(八進位制) 77
%f 浮點型別 1.0
%a 十六進位制浮點型別 ff.ff
%e 指數型別 5.33e-2
%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);  
    str=String.format("Hi,%s:%s.%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,王力  
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

搭配轉換符的標誌

轉換符 說明 示例 結果

+

為正數或者負數新增符號

("%+d",15)

+15

左對齊

("%-5d",15)

|15   |

0

數字前面補0

("%04d", 99)

0099

空格

在整數之前新增指定數量的空格

("% 4d", 99)

|  99|

,

以“,”對數字分組

("%,f", 9999.99)

9,999.990000

(

使用括號包含負數

("%(f", -99.99)

(99.990000)

#

如果是浮點數則包含小數點,如果是16進位制或8進位制則新增0x或0

("%#x", 99)

("%#o", 99)

0x63

0143

格式化前一個轉換符所描述的引數

("%f和%<3.2f", 99.45)

99.450000和99.45

$

被格式化的引數索引

("%1$d,%2$s", 99,"abc")

99,abc

public static void main(String[] args) {  
    String str=null;  
    //$使用  
    str=String.format("格式引數$的使用:%1$d,%2$s", 99,"abc");             
    System.out.println(str);                       
    //+使用  
    System.out.printf("顯示正負數的符號:%+d與%d%n", 99,-99);  
    //補O使用  
    System.out.printf("最牛的編號是:%03d%n", 7);  
    //空格使用  
    System.out.printf("Tab鍵的效果是:% 8d%n", 7);  
    //.使用  
    System.out.printf("整數分組的效果是:%,d%n", 9989997);  
    //空格和小數點後面個數  
    System.out.printf("一本書的價格是:% 50.5f元%n", 49.8);  
}

輸出結果

格式引數$的使用:99,abc  
顯示正負數的符號:+99與-99  
最牛的編號是:007  
Tab鍵的效果是:       7  
整數分組的效果是:9,989,997  
一本書的價格是:                                          49.80000元