欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java格式化類Format解讀

 更新時間:2024年12月14日 09:35:04   作者:騎個小蝸牛  
Java.text.Format 是 Java 格式化的抽象基類,用于將對象格式化為指定模式的字符串,或者將指定模式的字符串解析為對象,主要包含 format 和 parseObject 方法,分別用于格式化和解析

Format介紹

java.text.Format是Java格式化的抽象基類。主要用于將對象格式化為指定模式的字符串,或者將指定模式的字符串解析為對象。

Format方法

- format(格式化)

格式化:對象格式化為字符串。

public final String format (Object obj)
public final String format (Object obj) {
    return format(obj, new StringBuffer(), new FieldPosition(0)).toString();
}

一般使用此方法來將對象格式化為字符串,該方法為不可變方法,方法內(nèi)部調(diào)用抽象方法的具體子類實現(xiàn)。

public abstract StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos)

抽象方法,子類必須實現(xiàn)該方法,定義子類自己具體的對象格式化為字符串的邏輯。

- parseObject(解析)

解析:字符串解析為對象。

public Object parseObject(String source) throws ParseException
public Object parseObject(String source) throws ParseException {
    ParsePosition pos = new ParsePosition(0);
    Object result = parseObject(source, pos);
    if (pos.index == 0) {
        throw new ParseException("Format.parseObject(String) failed",
            pos.errorIndex);
    }
    return result;
}

一般使用此方法來將字符串解析為對象,該方法為不可變方法,方法內(nèi)部調(diào)用抽象方法的具體子類實現(xiàn)。

public abstract Object parseObject (String source, ParsePosition pos)

抽象方法,子類必須實現(xiàn)該方法,定義子類自己具體的字符串解析為對象的邏輯。

格式化分類

格式化分類格式化類描述
日期時間格式化DateFormat格式化日期時間的抽象類
SimpleDateFormatDateFormat的實現(xiàn)類,用于格式化和解析日期時間,非線程安全
ClassicFormatDateTimeFormatter的內(nèi)部類,提供日期時間的格式化和解析
數(shù)字格式化NumberFormat格式化數(shù)字的抽象類
DecimalFormatNumberFormat的實現(xiàn)類,提供數(shù)字格式化和解析
ChoiceFormatNumberFormat的實現(xiàn)類,可以根據(jù)特定的值范圍來選擇相應(yīng)的格式
字符串格式化MessageFormat用于字符串格式化的類。它可以將帶有占位符的模板字符串和對應(yīng)的參數(shù)值進(jìn)行格式化
StringString類的format方法用于字符串的格式化

日期時間格式化

1. DateFormat

日期格式化抽象類,根據(jù)當(dāng)前語言環(huán)境格式化日期和時間。

因為DateFormat是一個抽象類,所以不能直接new創(chuàng)建實例對象。但DateFormat提供了一些靜態(tài)方法便于我們構(gòu)建DateFormat子類的實例。

常用方法
getInstance

獲取格式化的日期時間

  • getInstance():輸出樣式:22-8-30 下午4:14
getDateInstance

獲取格式化的日期

方法描述
getDateInstance()輸出樣式:2022-8-30
getDateInstance(int style)指定樣式
getDateInstance(int style, Locale aLocale)指定樣式和語言環(huán)境
getTimeInstance

獲取格式化的時間

方法描述
getTimeInstance()輸出樣式:16:14:32
getTimeInstance(int style)指定樣式
getTimeInstance(int style, Locale aLocale)指定樣式和語言環(huán)境
getDateTimeInstance

獲取格式化的日期時間

方法描述
getDateTimeInstance()輸出樣式:2022-8-30 16:14:32
getDateTimeInstance(int dateStyle, int timeStyle)指定樣式
getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)指定樣式和語言環(huán)境
方法入?yún)?/h5>
style

設(shè)置輸出樣式。

DateFormat提供了多種輸出樣式:

    /**
     * 完整樣式
     */
    public static final int FULL = 0;
    /**
     * 長樣式
     */
    public static final int LONG = 1;
    /**
     * 中等樣式
     */
    public static final int MEDIUM = 2;
    /**
     * 短樣式
     */
    public static final int SHORT = 3;
    /**
     * 默認(rèn)樣式:中等樣式
     */
    public static final int DEFAULT = MEDIUM;
樣式輸出格式(日期Date)輸出格式(時間Time)
SHORT22-8-30下午4:03
MEDIUM
DEFAULT
2022-8-3016:03:06
LONG2022年8月30日下午04時03分06秒
FULL2022年8月30日 星期二下午04時03分06秒 CST
Locale

設(shè)置語言環(huán)境。

  • language:語言(zh:中文)
  • region:地區(qū)(CN:China)

2. SimpleDateFormat

SimpleDateFormat是DateFormat的一個具體實現(xiàn)類,是非線程安全的。

因為DateFormat直接支持的樣式比較少,經(jīng)常滿足不了實際需求,于是SimpleDateFormat就來了,SimpleDateFormat提供了豐富的樣式且可自定義樣式。

在使用SimpleDateFormat的時候,需要通過字母來描述時間元素,并組裝成想要的日期和時間模式。

常用模式元素

常用的日期時間元素和字母的對應(yīng)表如下:

字母描述實例
G年代標(biāo)志符(公元、公元前)AD、BC
y2015
Y周年2016
M年中的月份12
w年中的周數(shù)50
W月份中的周數(shù)02
D年中的天數(shù)344
d月份中的天數(shù)10
F月份中的星期02
E周中的天數(shù)(星期幾)Thu
u周中的天數(shù)(第幾天,星期一=1,星期日=7)1
aAM/PM標(biāo)記AM、PM、上午、下午
H一天中的小時數(shù)(0~23)21
k一天中的小時數(shù)(1~24)21
KAM/PM中的小時數(shù)(0~11)09
hAM/PM中的小時數(shù)(1~12)09
m小時中的分鐘數(shù)31
s分鐘中的秒數(shù)08
S毫秒數(shù)716
z時區(qū)CST
Z時區(qū)(RFC 822標(biāo)準(zhǔn)時區(qū))+0800
X時區(qū)(ISO 8601標(biāo)準(zhǔn)時區(qū))+08

y與Y的區(qū)別:

  • YY是周年
  • yy是日歷年,推薦使用y

舉例:今天是2019年12月30日,日歷年是 2019,但周年是 2020,因為本周是 2020 年的第 1 周。所以yy是19,而YY是20。

使用方法
格式化
public static void main(String[] args) throws ParseException {
    Date date = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("G yyyy-MM-dd HH:mm:ss S E z");
    String format = simpleDateFormat.format(date);
}

debug:

解析
public static void main(String[] args) throws ParseException {
        String str = "公元 2022-08-30 22:10:03 530 星期二 CST";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("G yyyy-MM-dd HH:mm:ss S E z");
        Date date1 = (Date) simpleDateFormat.parseObject(str);
}

debug:

3. ClassicFormat

暫不分析。

數(shù)字格式化

1. NumberFormat

數(shù)字格式化抽象類,根據(jù)當(dāng)前語言環(huán)境格式化數(shù)字。

NumberFormat是一個抽象類,不能直接new創(chuàng)建實例對象。NumberFormat提供了一些靜態(tài)方法便于我們構(gòu)建NumberFormat子類的實例。

常用方法
getInstance

獲取格式化的常規(guī)數(shù)值

  • getInstance()
  • getInstance(Locale inLocale)
getNumberInstance

獲取格式化的常規(guī)數(shù)值

  • getNumberInstance()
  • getNumberInstance(Locale inLocale)
getIntegerInstance

獲取格式化的整型數(shù)值

  • getIntegerInstance()
  • getIntegerInstance(Locale inLocale)
getPercentInstance

獲取格式化的百分比數(shù)值

  • getPercentInstance()
  • getPercentInstance(Locale inLocale)
getCurrencyInstance

獲取格式化的指定語言環(huán)境的貨幣數(shù)值

  • getCurrencyInstance()
  • getCurrencyInstance(Locale inLocale)
方法示例
public static void main(String[] args) throws ParseException {
    NumberFormat instance = NumberFormat.getInstance();
    String format = instance.format(2.3);
    System.out.println("getInstance=====================" + format);
    NumberFormat integerInstance = NumberFormat.getIntegerInstance();
    String format1 = integerInstance.format(2.3);
    System.out.println("getIntegerInstance==============" + format1);
    NumberFormat percentInstance = NumberFormat.getPercentInstance();
    String format2 = percentInstance.format(2.3);
    System.out.println("getPercentInstance==============" + format2);
    NumberFormat currencyInstance = NumberFormat.getCurrencyInstance();
    String format3 = currencyInstance.format(2.3);
    System.out.println("getCurrencyInstance=============" + format3);
    NumberFormat currencyInstance1 = NumberFormat.getCurrencyInstance(Locale.US);
    String format4 = currencyInstance1.format(2.3);
    System.out.println("getCurrencyInstance(Locale.US)==" + format4);
}

控制臺日志:

getInstance=====================2.3
getIntegerInstance==============2
getPercentInstance==============230%
getCurrencyInstance=============¥2.30
getCurrencyInstance(Locale.US)==$2.30

2. DecimalFormat

DecimalFormat是NumberFormat的一個具體子類,用于格式化十進(jìn)制數(shù)字。

DecimalFormat能夠分析和格式化任意語言環(huán)境中的數(shù)字:

  • 包括對西方語言、阿拉伯語和印度語數(shù)字的支持。
  • 支持整數(shù) (123)、定點數(shù) (123.4)、科學(xué)記數(shù)法表示的數(shù) (1.23E4)、百分?jǐn)?shù) (12%) 和金額 ($123)等。
  • 所有的內(nèi)容都可以本地化(本地化:使用本地的語言環(huán)境)。

需要注意的是:DecimalFormat是非線程安全的。

DecimalFormat支持手動配置模式使用模式符號

手動設(shè)置模式
  • setMaximumFractionDigits(int newValue):設(shè)置小數(shù)部分中允許的最大數(shù)字位數(shù)
  • setMinimumFractionDigits(int newValue):設(shè)置小數(shù)部分中允許的最小數(shù)字位數(shù),如果原數(shù)小數(shù)位數(shù)不夠的話,會補(bǔ)零。
  • setGroupingSize(int i):設(shè)置分組中一組的位數(shù)(整數(shù)部分,默認(rèn)3個數(shù)字為一組)。
  • setGroupingUsed(boolean value):設(shè)置是否使用分組,true表示使用,false表示取消分組
  • setMaximumIntegerDigits(int newValue):設(shè)置整數(shù)部分允許的最大數(shù)字位數(shù)
  • setMinimumIntegerDigits(int newValue):設(shè)置整數(shù)部分允許的最小數(shù)字位數(shù)
使用模式符號串
符號位置是否本地化含義
0數(shù)字阿拉伯?dāng)?shù)字,位數(shù)不足時補(bǔ)0
#數(shù)字阿拉伯?dāng)?shù)字,位數(shù)不足時不管
.數(shù)字小數(shù)分隔符或貨幣小數(shù)分隔符
-數(shù)字減號
,數(shù)字分組分隔符
E數(shù)字分隔科學(xué)計數(shù)法中的尾數(shù)和指數(shù)
;子模式邊界分隔正數(shù)和負(fù)數(shù)子模式
分號前是正常模式,分號后是負(fù)數(shù)輸入的的輸出前綴
- 如果輸入為正數(shù),輸出:正常模式的結(jié)果
- 如果輸入為正數(shù),輸出:負(fù)數(shù)的前綴+正常模式的結(jié)果的絕對值
%前綴或后綴乘以100并顯示為百分?jǐn)?shù)
\u2030前綴或后綴乘以1000并顯示為千分?jǐn)?shù)
¤(\u00A4)前綴或后綴貨幣記號,由貨幣符號替換。
如果同時出現(xiàn)兩個該符號,則用國際貨幣符號替換。
如果出現(xiàn)在某個模式中,則使用貨幣小數(shù)分隔符,而不使用小數(shù)分隔符。
'前綴或后綴用于在前綴或后綴中為特殊字符加引號,使特殊符號變?yōu)槠胀ㄗ址ㄈ缫獎?chuàng)建單引號本身,請連續(xù)使用兩個單引號)。
例如:"'#'#" 將123格式化為 "#123"
使用方法
格式化

① 手動配置模式

    public static void main(String[] args) throws ParseException {
        DecimalFormat decimalFormat = new DecimalFormat();
        decimalFormat.setGroupingUsed(true);// 使用分組
        decimalFormat.setGroupingSize(4);// 分組中一組的位數(shù)
        decimalFormat.setMinimumIntegerDigits(2);// 整數(shù)部分最小位數(shù)
        decimalFormat.setMaximumIntegerDigits(8);// 整數(shù)部分最大位數(shù)
        decimalFormat.setMinimumFractionDigits(2);// 小數(shù)部分最小位數(shù)
        decimalFormat.setMaximumFractionDigits(4);// 小數(shù)部分最大位數(shù)

        System.out.println(decimalFormat.format(1.11));// 01.11

        System.out.println(decimalFormat.format(11111.222));// 1,1111.222

        System.out.println(decimalFormat.format(11111111111.222222222222));// 1111,1111.2222
    }

② 使用模式符號串

    public static void main(String[] args){
        double pi = 3.1415926;

        // 取整數(shù)部分,整數(shù)部分不足2位補(bǔ)0
        System.out.println(new DecimalFormat("00").format(pi));// 03

        // 取整數(shù)部分和10位小數(shù),整數(shù)部分不足2位補(bǔ)0,小數(shù)部分不足10位補(bǔ)0
        System.out.println(new DecimalFormat("00.0000000000").format(pi));// 03.1415926000

        // 取整數(shù)部分,整數(shù)部分不足2位不管
        System.out.println(new DecimalFormat("##").format(pi));// 3
        // ###和上面的##沒區(qū)別
        System.out.println(new DecimalFormat("###").format(pi));// 3

        // 取整數(shù)部分和10位小數(shù),整數(shù)部分不足2位不管,小數(shù)部分不足10位不管
        System.out.println(new DecimalFormat("##.##########").format(pi));// 3.1415926

        // 若輸入為非負(fù)數(shù),按;前面的正常模式輸出
        // 若輸入為負(fù)數(shù),按;后面的(負(fù)數(shù)輸入的輸出前綴+正常模式輸出的絕對值)輸出
        System.out.println(new DecimalFormat("#.##;前綴").format(3.1415926));// 3.14
        System.out.println(new DecimalFormat("#.##;前綴").format(-3.1415926));// 前綴3.14

        // 百分比方式計數(shù)(百分號在末位),取整數(shù)部分和2位小數(shù),小數(shù)部分不足2位不管
        System.out.println(new DecimalFormat("#.##%").format(pi));// 314.16%

        // 百分比方式計數(shù)(百分號在首位),取整數(shù)部分和2位小數(shù),小數(shù)部分不足2位不管
        System.out.println(new DecimalFormat("%#.##").format(pi));// %314.16

        // 千分比方式計數(shù)(千分號在末位),取整數(shù)部分和2位小數(shù),小數(shù)部分不足2位不管
        System.out.println(new DecimalFormat("#.##\u2030").format(pi));// 3141.59‰

        // 千分比方式計數(shù)(千分號在首位),取整數(shù)部分和2位小數(shù),小數(shù)部分不足2位不管
        System.out.println(new DecimalFormat("\u2030#.##").format(pi));// ‰3141.59

        //顯示為科學(xué)計數(shù)法,并取五位小數(shù)
        System.out.println(new DecimalFormat("#.#####E0").format(pi));// 3.14159E0

        //顯示為兩位整數(shù)的科學(xué)計數(shù)法,并取四位小數(shù)
        System.out.println(new DecimalFormat("00.####E0").format(pi));// 31.4159E-1

        //取整數(shù)部分,每三位以逗號進(jìn)行分隔。
        System.out.println(new DecimalFormat(",###").format(pi));// 3

        // 添加貨幣符號在首位,如果同時出現(xiàn)兩個該符號,則用國際貨幣符號
        System.out.println(new DecimalFormat("¤#.##").format(pi));// ¥3.14
        System.out.println(new DecimalFormat("\u00A4#.##").format(pi));// ¥3.14
        System.out.println(new DecimalFormat("¤¤#.##").format(pi));// CNY3.14

        // 添加貨幣符號在末位,如果同時出現(xiàn)兩個該符號,則用國際貨幣符號
        System.out.println(new DecimalFormat("#.##¤").format(pi));// 3.14¥
        System.out.println(new DecimalFormat("#.##\u00A4").format(pi));// 3.14¥
        System.out.println(new DecimalFormat("#.##¤¤").format(pi));// 3.14CNY

        // 將特殊字符變?yōu)槠胀ㄗ址?
        System.out.println(new DecimalFormat("''#.##").format(pi));// '3.14
        System.out.println(new DecimalFormat("#.##''").format(pi));// 3.14'
        System.out.println(new DecimalFormat("'#'#.##").format(pi));// #3.14
        System.out.println(new DecimalFormat("#.##'#'").format(pi));// 3.14#

        //將格式嵌入文本
        System.out.println(new DecimalFormat("圓周率π:#.##").format(pi));// 圓周率π:3.14
    }
解析

解析也可以手動配置模式或者使用模式符號串,這里只以使用模式符號串方式舉例。

    public static void main(String[] args) throws ParseException {
        System.out.println(new DecimalFormat("圓周率π:#.##").parseObject("圓周率π:3.14"));// 3.14

        System.out.println(new DecimalFormat("#.##;前綴").parseObject("前綴3.14"));// -3.14

        System.out.println(new DecimalFormat("00.####E0").parseObject("31.4159E-1"));// 3.14159
    }

3. ChoiceFormat

ChoiceFormat將格式化運用到某個范圍的數(shù)。

ChoiceFormat與其他Format類的不同之處在于,它使用構(gòu)造函數(shù)放入方式(而不是使用getInstance樣式工廠方法)創(chuàng)建ChoiceFormat對象。

注意:limits數(shù)組需要升序排列(否則結(jié)果會出錯)

常用方法
nextDouble(double d)

查找大于d的最小double值,一般用在limits數(shù)組中,從而使limits數(shù)組形成一個右開區(qū)間數(shù)組

例如:limits = {0,1,ChoiceFormat.nextDouble(1)}

nextDouble(double d, boolean positive)
  1. positive=true,表示查找大于d的最小double值,一般用在limits數(shù)組中,從而使limits數(shù)組形成一個右開區(qū)間數(shù)組
  2. positive=false,表示查找小于d的最大double值,一般用在limits數(shù)組中,從而使limits數(shù)組形成一個左開區(qū)間數(shù)組
previousDouble(double d)

查找小于d的最大double值,一般用在limits數(shù)組中,從而使limits數(shù)組形成一個左開區(qū)間數(shù)組

public static void main(String[] args) {
	 System.out.println(ChoiceFormat.nextDouble(1));// 1.0000000000000002
	 System.out.println(ChoiceFormat.nextDouble(1,true));// 1.0000000000000002
	 System.out.println(ChoiceFormat.nextDouble(1,false));// 0.9999999999999999
	 System.out.println(ChoiceFormat.previousDouble(1));// 0.9999999999999999
}

上面三個方法的使用場景:

如果有個這樣的需求:

  1. 當(dāng)number < 1時,取值0
  2. 當(dāng)1 <= number <= 2時,取值1
  3. 當(dāng)2 < number <= 3時,取值2
  4. 當(dāng)number > 3時,取值3

代碼實現(xiàn):

    double[] limits = {0, 1, 2, 3};
    String[] formats = {"0","1","2","3"};
    ChoiceFormat format = new ChoiceFormat(limits, formats);

如果這樣的寫法,顯然不能滿足:

  • number = 2時,取值1
  • number = 3時,取值2

我們可以這么寫

public static void main(String[] args) {
    double[] limits = {0, 1, ChoiceFormat.nextDouble(2), ChoiceFormat.nextDouble(3)};
    String[] formats = {"0","1","2","3"};
    ChoiceFormat format = new ChoiceFormat(limits, formats);
    System.out.println(format.format(0));
    System.out.println(format.format(1));
    System.out.println(format.format(2));
    System.out.println(format.format(3));
    System.out.println(format.format(4));
}

能完全滿足上面的需求(number = 2時,取值1;number = 3時,取值2)。

ChoiceFormat(double[] limits, String[] formats)

構(gòu)造函數(shù)中接收一個formats數(shù)組和一個limits數(shù)組,這兩個數(shù)組必須具有相同數(shù)量的元素。

  • 第一個數(shù)組是原始雙精度數(shù)組,表示每個間隔的最小值(起始值)。
  • 第二個數(shù)組是一個字符串?dāng)?shù)組,代表與每個間隔關(guān)聯(lián)的名稱。

limits數(shù)組實際上是個區(qū)間,可開可閉,并且必須按升序排列,如果不按升序排列,格式化結(jié)果將會不正確,還可以使用\u221E(表示無窮大)。

匹配規(guī)則:limits[i] <= number <limits[i+1]

number表示使用format方法傳入的值,i表示limit數(shù)組中的索引。當(dāng)且僅當(dāng)上述公式成立時,number匹配i,如果不能匹配,則會根據(jù)number是太小還是太大,匹配limits數(shù)組的第一個索引或最后一個索引,然后使用匹配的limits數(shù)組中的索引,去formats數(shù)組中尋找相同索引的值。

public static void main(String[] args) {
	double[] limits = {0, 1, 2, 3, 4, 5, 6};
	String[] formats = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" };
	ChoiceFormat format = new ChoiceFormat(limits, formats);
	System.out.println(format.format(-1));// 星期一
	System.out.println(format.format(0));// 星期一
	System.out.println(format.format(1));// 星期二
	System.out.println(format.format(2.5));// 星期三
	System.out.println(format.format(6.6));// 星期日
	System.out.println(format.format(7));// 星期日
	System.out.println(format.format(8));// 星期日
}
namber取值范圍匹配formats索引位置匹配值
number < 0匹配formats[0]星期一
0 <= number < 1匹配formats[0]星期一
1 <= number < 2匹配formats[1]星期二
2 <= number < 3匹配formats[2]星期三
3 <= number < 4匹配formats[3]星期四
4 <= number < 5匹配formats[4]星期五
5 <= number < 6匹配formats[5]星期六
numbe >= 6匹配formats[6]星期日
ChoiceFormat(String newPattern)

ChoiceFormat類的構(gòu)造方法也允許我們傳入一個模式字符串,format方法會根據(jù)這個模式字符串執(zhí)行格式化操作。

模式元素的格式:doubleNum [占位符] formatStr

占位符
占位符描述
#等于
<大于
\u2264(<=)大于等于

注意:比較運算符和平時實現(xiàn)相反的,因為該地方類似于變量在比較運算符的右邊(平時是在左邊)

模式字符串中的每個模式元素之間使用 | 分割,| 前后可以添加空格以美化代碼。

其實在ChoiceFormat(String newPattern)構(gòu)造方法的內(nèi)部,模式字符串還是被轉(zhuǎn)換為limits和formats兩個數(shù)組。

public static void main(String[] args) {
	ChoiceFormat choice=new ChoiceFormat("1 # A | 2 < B | 3 \u2264 C | 5 # D");
	System.out.println(choice.format(0));
	System.out.println(choice.format(1));
	System.out.println(choice.format(2));
	System.out.println(choice.format(3));
	System.out.println(choice.format(4));
	System.out.println(choice.format(5));
	System.out.println(choice.format(6));
}

字符串格式化

1. MessageFormat

MessageFormat提供與語言環(huán)境無關(guān)的生成連接消息的方式。

通常用MessageFormat的靜態(tài)方法format,該方法接收一個字符串的模式和一組對象(對象數(shù)組),按照模式形式將格式化的對象插入到模式中,然后返回字符串結(jié)果。

static String format(String pattern, Object … arguments)

  • pattern:字符串模式
  • arguments:對象數(shù)組
模式元素

模式元素格式:ArgumentIndex[,FormatType[,FormatStyle]]

  • ArgumentIndex:入?yún)⑺饕恢茫◤?開始)
  • FormatType:格式化類型
  • FormatStyle:格式化樣式
格式化類型
  • date:調(diào)用DateFormat進(jìn)行格式化
  • time:調(diào)用DateFormat進(jìn)行格式化
  • number:調(diào)用NumberFormat進(jìn)行格式化
  • choice:調(diào)用ChoiceFormat進(jìn)行格式化
格式化樣式
  • short
  • medium
  • long
  • full
  • integer
  • currency
  • percent
  • SubformatPattern(子模式)
使用示例
public static void main(String[] args) {
    Date date = new Date();
    System.out.println(MessageFormat.format("{0},{1},{2}", date, date, 1.11));
    System.out.println(MessageFormat.format("{0,date},{1,time},{2,number}", date, date, 1.11));
    System.out.println(MessageFormat.format("{0,date,MEDIUM},{1,time,MEDIUM},{2,number,integer},{3,number,#.#}", date, date, 1.11, 2.22));
}

輸出:

22-9-5 下午10:47,22-9-5 下午10:47,1.11
2022-9-5,22:47:39,1.11
2022-9-5,22:47:39,1,2.2

2. String.format

String有兩個格式化方法

  • format(String format, Object… args)
  • format(Locale l, String format, Object… args)
format參數(shù)

format參數(shù)格式:%[index$][flags][width][.precision]conversion

模塊
模塊是否必須描述
index$參數(shù)在參數(shù)列表中的位置,十進(jìn)制整數(shù)。
第一個參數(shù)由 "1$" 引用,第二個參數(shù)由 "2$"引用
flags標(biāo)識,用來控制輸出格式
width輸出的最小長度,正整數(shù)
.precision精度,限定輸出字符數(shù)
conversion轉(zhuǎn)換符,指定如何格式化參數(shù)
標(biāo)識
標(biāo)識描述
-在最小寬度內(nèi)左對齊,不可與0標(biāo)識一起使用
0若內(nèi)容長度不足最小寬度,則在左邊用0來填充
#對8進(jìn)制和16進(jìn)制,8進(jìn)制前添加一個0,16進(jìn)制前添加0x
+結(jié)果總包含一個+或-號
空格正數(shù)前加空格,負(fù)數(shù)前加-號
,只用與十進(jìn)制,每3位數(shù)字間用,分隔
(若結(jié)果為負(fù)數(shù),則用括號括住,且不顯示符號
轉(zhuǎn)換符
s字符串類型
c字符類型
b布爾類型,只要實參為非false的布爾類型,均格式化為字符串true,否則為字符串false
d整數(shù)類型(十進(jìn)制)
x整數(shù)類型(八進(jìn)制)
o整數(shù)類型(十六進(jìn)制)
f浮點數(shù)型(十進(jìn)制)。顯示9位有效數(shù)字,且會進(jìn)行四舍五入。如99.99
a浮點數(shù)型(十六進(jìn)制)
g浮點數(shù)型(比%f,%a長度短些,顯示6位有效數(shù)字,且會進(jìn)行四舍五入)
e指數(shù)類型。如9.38e+5
h散列碼
%百分比
tx日期與時間類型(x代表不同的日期與時間轉(zhuǎn)換符)
n換行符

舉例:

public static void main(String[] args) {
    System.out.println(String.format("%2$06.2f======%1$d", 2, 11.1111));// 011.11======2
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 三分鐘帶你掌握J(rèn)ava開發(fā)圖片驗證碼功能方法

    三分鐘帶你掌握J(rèn)ava開發(fā)圖片驗證碼功能方法

    這篇文章主要來為大家詳細(xì)介紹Java實現(xiàn)開發(fā)圖片驗證碼的具體方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • springboot使用事物注解方式代碼實例

    springboot使用事物注解方式代碼實例

    這篇文章主要介紹了springboot使用事物注解方式代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 解決FeignClient重試機(jī)制造成的接口冪等性

    解決FeignClient重試機(jī)制造成的接口冪等性

    這篇文章主要介紹了解決FeignClient重試機(jī)制造成的接口冪等性問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot使用hutool操作FTP的詳細(xì)過程

    SpringBoot使用hutool操作FTP的詳細(xì)過程

    在使用SpringBoot結(jié)合hutool操作FTP時,遇到防火墻導(dǎo)致上傳文件大小為0kb的問題,通過設(shè)置FTP為被動模式解決,本文詳細(xì)解析了FTP的主動模式和被動模式的工作原理、安全性及適用場景,幫助理解FTP的連接方式和解決網(wǎng)絡(luò)限制問題
    2024-09-09
  • Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實例

    Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實例

    下面小編就為大家?guī)硪黄狫ava用POI解析excel并獲取所有單元格數(shù)據(jù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java Calendar日歷類的使用介紹

    Java Calendar日歷類的使用介紹

    Candendar類是一個抽象類,提供了一些獲取當(dāng)前時間,或者指定的時間的字段和一些方法,我們可以通過一些方法與字段對他進(jìn)行獲取當(dāng)前天或者當(dāng)月的一些信息
    2022-09-09
  • MyBatisPlus自定義SQL的實現(xiàn)

    MyBatisPlus自定義SQL的實現(xiàn)

    MyBatisPlus提供了自定義SQL功能,允許開發(fā)者在Mapper接口中定義方法,并通過XML文件或注解編寫SQL語句,本文詳解了如何在MP中使用自定義SQL,感興趣的可以了解一下
    2024-09-09
  • SpringBoot種如何使用?EasyExcel?實現(xiàn)自定義表頭導(dǎo)出并實現(xiàn)數(shù)據(jù)格式化轉(zhuǎn)換

    SpringBoot種如何使用?EasyExcel?實現(xiàn)自定義表頭導(dǎo)出并實現(xiàn)數(shù)據(jù)格式化轉(zhuǎn)換

    本文詳細(xì)介紹了如何使用EasyExcel工具類實現(xiàn)自定義表頭導(dǎo)出,并實現(xiàn)數(shù)據(jù)格式化轉(zhuǎn)換與添加下拉框操作,通過示例和代碼,展示了如何處理不同數(shù)據(jù)結(jié)構(gòu)和注解,確保數(shù)據(jù)在導(dǎo)出時能夠正確顯示和格式化,此外,還介紹了如何解決特定數(shù)據(jù)類型的轉(zhuǎn)換問題,并提供了解決方案
    2024-11-11
  • MyBatis?typeHandler接口的定義和使用

    MyBatis?typeHandler接口的定義和使用

    TypeHandler被稱作類型處理器,MyBatis在設(shè)置預(yù)處理語句中的參數(shù)或從結(jié)果集中取出一個值時,都會用類型處理器將Java對象轉(zhuǎn)化為數(shù)據(jù)庫支持的類型或者將獲取到數(shù)據(jù)庫值以合適的方式轉(zhuǎn)換成Java類型,感興趣的同學(xué)可以參考下文
    2023-05-05
  • Spring Boot統(tǒng)一異常攔截實踐指南(最新推薦)

    Spring Boot統(tǒng)一異常攔截實踐指南(最新推薦)

    本文介紹了Spring Boot中統(tǒng)一異常處理的重要性及實現(xiàn)方案,包括使用`@ControllerAdvice`和`@ExceptionHandler`注解,實現(xiàn)全局異常處理和統(tǒng)一響應(yīng)格式,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-02-02

最新評論