最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java字符串格式化工具String.format()完整用法指南

 更新時(shí)間:2026年01月13日 11:15:28   作者:碼靈  
String.format是Java中的一個(gè)靜態(tài)方法,用于創(chuàng)建格式化的字符串,這篇文章主要介紹了Java字符串格式化工具String.format()完整用法指南的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

String.format()是 Java 中最核心的字符串格式化工具,能根據(jù)指定模板和參數(shù)生成標(biāo)準(zhǔn)化字符串,替代硬編碼拼接,提升代碼可讀性和跨平臺(tái)兼容性。以下是其完整、系統(tǒng)的用法講解。

一、基礎(chǔ)認(rèn)知

核心作用

將普通文本與動(dòng)態(tài)參數(shù)按指定格式拼接,返回格式化后的字符串(類似 C 語(yǔ)言printf,但不直接輸出,僅返回字符串)。

核心語(yǔ)法

提供兩個(gè)重載方法,日常開(kāi)發(fā)中前者更常用:

// 1. 默認(rèn)本地環(huán)境(Locale):適配當(dāng)前系統(tǒng)的數(shù)字/日期格式
public static String format(String format, Object... args)

// 2. 指定本地環(huán)境:比如強(qiáng)制使用英文/中文區(qū)域的日期/數(shù)字格式
public static String format(Locale l, String format, Object... args)
  • format:格式模板,包含普通文本和以%開(kāi)頭的格式說(shuō)明符(占位符);
  • args:可變參數(shù),按順序匹配模板中的占位符(可通過(guò)參數(shù)索引復(fù)用 / 亂序)。

二、格式說(shuō)明符的完整結(jié)構(gòu)

格式說(shuō)明符是String.format()的核心,決定參數(shù)的格式化規(guī)則,完整結(jié)構(gòu)如下:

%[參數(shù)索引$][標(biāo)志][寬度][.精度]轉(zhuǎn)換符

各部分含義(必選 / 可選標(biāo)注):

組成部分是否必選說(shuō)明
%格式說(shuō)明符的起始標(biāo)記。
參數(shù)索引 $指定使用第幾個(gè)參數(shù)(如%2$d表示第二個(gè)參數(shù)作為整數(shù)),可復(fù)用參數(shù)。
標(biāo)志格式化修飾符(如左對(duì)齊、補(bǔ)零、千分位、顯示正負(fù)號(hào))。
寬度指定輸出的最小字符數(shù)(不足時(shí)補(bǔ)空格 / 零,超出則按實(shí)際長(zhǎng)度)。
. 精度浮點(diǎn)數(shù):指定小數(shù)位數(shù);字符串:指定截取長(zhǎng)度;整數(shù) / 字符:無(wú)意義。
轉(zhuǎn)換符核心,指定參數(shù)的類型(如整數(shù)、字符串、日期、進(jìn)制)。

三、全量常用轉(zhuǎn)換符

轉(zhuǎn)換符決定參數(shù)的解析類型,以下是覆蓋 99% 場(chǎng)景的全量常用轉(zhuǎn)換符(標(biāo)注「補(bǔ)充」為之前額外新增的):

轉(zhuǎn)換符類型說(shuō)明示例(參數(shù))輸出效果
d整數(shù)(十進(jìn)制)常規(guī)整數(shù)格式化%d (123)123
s字符串任意對(duì)象都會(huì)調(diào)用toString()轉(zhuǎn)為字符串%s ("Java")Java
c字符單個(gè)字符,參數(shù)為charint(ASCII 碼)%c ('A')A
b布爾值null/ 非false則輸出true,否則false%b (true)true
f浮點(diǎn)數(shù)(小數(shù))默認(rèn)保留 6 位小數(shù),可通過(guò)精度調(diào)整%f (3.1415)3.141500
e科學(xué)計(jì)數(shù)法浮點(diǎn)數(shù)轉(zhuǎn)為科學(xué)計(jì)數(shù)法格式%e (123.45)1.234500e+02
t/T日期時(shí)間配合子轉(zhuǎn)換符使用(如%tY= 年份),T表示結(jié)果大寫%tY (new Date())2025
%tF日期(ISO 標(biāo)準(zhǔn))【補(bǔ)充】快捷格式,等價(jià)于%tY-%tm-%td,輸出yyyy-MM-dd%tF (new Date())2025-12-26
%tD日期(美式)【補(bǔ)充】快捷格式,等價(jià)于%tm/%td/%ty,輸出MM/dd/yy%tD (new Date())12/26/25
x/X十六進(jìn)制整數(shù)【補(bǔ)充】%x小寫(a-f),%X大寫(A-F)%X (255)FF
o八進(jìn)制整數(shù)【補(bǔ)充】十進(jìn)制轉(zhuǎn)八進(jìn)制%o (10)12
%%百分號(hào)本身【補(bǔ)充】轉(zhuǎn)義輸出%,直接寫%會(huì)報(bào)錯(cuò)%% ()%
%n換行符【補(bǔ)充】跨平臺(tái)換行(Windows=\r\n,Linux=\n),替代硬編碼\n%n ()系統(tǒng)對(duì)應(yīng)換行符

四、綜合實(shí)戰(zhàn)示例(覆蓋所有核心場(chǎng)景)

以下示例整合了基礎(chǔ)用法和補(bǔ)充格式符,可直接復(fù)制運(yùn)行:

import java.util.Date;
import java.util.Locale;

public class StringFormatCompleteDemo {
    public static void main(String[] args) {
        Date now = new Date();
        
        // ========== 場(chǎng)景1:基礎(chǔ)類型格式化(字符串、整數(shù)、浮點(diǎn)數(shù)、布爾、字符) ==========
        String basic = String.format(
            "姓名:%s,年齡:%d,成績(jī):%.2f,是否及格:%b,等級(jí):%c",
            "張三", 25, 89.567, true, 'A'
        );
        System.out.println("基礎(chǔ)類型:" + basic);
        // 輸出:姓名:張三,年齡:25,成績(jī):89.57,是否及格:true,等級(jí):A

        // ========== 場(chǎng)景2:寬度/標(biāo)志修飾(補(bǔ)零、左對(duì)齊、千分位、正負(fù)號(hào)) ==========
        String modifier = String.format(
            "編號(hào):%05d,姓名:%-10s,金額:%,d 元,溫度:%+d℃",
            123, "李四", 1234567, -5
        );
        System.out.println("寬度/標(biāo)志:" + modifier);
        // 輸出:編號(hào):00123,姓名:李四        ,金額:1,234,567 元,溫度:-5℃

        // ========== 場(chǎng)景3:日期時(shí)間格式化(含快捷格式%tF/%tD) ==========
        String date = String.format(
            "ISO日期:%tF,美式日期:%tD,完整時(shí)間:%tF %tT%n",
            now, now, now, now
        );
        System.out.println("日期時(shí)間:" + date);
        // 輸出:ISO日期:2025-12-26,美式日期:12/26/25,完整時(shí)間:2025-12-26 15:30:45(示例)

        // ========== 場(chǎng)景4:進(jìn)制轉(zhuǎn)換(十六進(jìn)制%X、八進(jìn)制%o) ==========
        String radix = String.format(
            "255的十六進(jìn)制(大寫):%04X,10的八進(jìn)制:%03o",
            255, 10
        );
        System.out.println("進(jìn)制轉(zhuǎn)換:" + radix);
        // 輸出:255的十六進(jìn)制(大寫):00FF,10的八進(jìn)制:012

        // ========== 場(chǎng)景5:特殊符號(hào)(百分號(hào)%%、跨平臺(tái)換行%n) ==========
        String special = String.format(
            "成功率:%.1f%%%n第一行內(nèi)容%n第二行內(nèi)容",
            99.5
        );
        System.out.println("特殊符號(hào):" + special);
        // 輸出:成功率:99.5%
        // 第一行內(nèi)容
        // 第二行內(nèi)容

        // ========== 場(chǎng)景6:參數(shù)索引(復(fù)用/亂序參數(shù)) ==========
        String index = String.format(
            "數(shù)字:%2$d,字符串:%1$s,再次使用數(shù)字:%2$d",
            "測(cè)試", 666
        );
        System.out.println("參數(shù)索引:" + index);
        // 輸出:數(shù)字:666,字符串:測(cè)試,再次使用數(shù)字:666
    }
}

五、注意事項(xiàng)

  1. 參數(shù)匹配:占位符數(shù)量需與參數(shù)數(shù)量匹配(參數(shù)索引復(fù)用除外),否則拋MissingFormatArgumentException
  2. 類型匹配:轉(zhuǎn)換符需與參數(shù)類型匹配(如%d不能接收字符串),否則拋IllegalFormatConversionException;
  3. 浮點(diǎn)數(shù)精度%.2f會(huì)自動(dòng)四舍五入(如3.1453.15);
  4. 轉(zhuǎn)義規(guī)則:輸出%必須用%%,直接寫%會(huì)被識(shí)別為格式符起始標(biāo)記導(dǎo)致報(bào)錯(cuò);
  5. 跨平臺(tái)兼容:優(yōu)先用%n替代\n,避免 Windows/Linux 換行符不一致問(wèn)題;
  6. 日期參數(shù)%tF/%tD僅支持Date/Calendar/LocalDateTime等日期類型參數(shù)。

六、核心總結(jié)

  1. 核心結(jié)構(gòu):格式說(shuō)明符的核心是%+轉(zhuǎn)換符(必選),參數(shù)索引、標(biāo)志、寬度、精度為可選修飾,可靈活控制輸出樣式;
  2. 高頻轉(zhuǎn)換符
    • 基礎(chǔ)類型:%d(整數(shù))、%s(字符串)、%f(浮點(diǎn)數(shù));
    • 日期:%tF(ISO 標(biāo)準(zhǔn)日期)、%tT(完整時(shí)間);
    • 特殊場(chǎng)景:%X(十六進(jìn)制)、%%(百分號(hào))、%n(跨平臺(tái)換行);
  3. 最佳實(shí)踐:避免硬編碼拼接字符串,用String.format()實(shí)現(xiàn)標(biāo)準(zhǔn)化輸出;優(yōu)先用%tF/%tT簡(jiǎn)化日期格式化,用%n保證跨平臺(tái)兼容性。

到此這篇關(guān)于Java字符串格式化工具String.format()完整用法的文章就介紹到這了,更多相關(guān)Java String.format ()用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程中的ThreadPoolExecutor使用解析

    Java多線程中的ThreadPoolExecutor使用解析

    這篇文章主要介紹了Java多線程中的ThreadPoolExecutor使用解析,作為線程池的緩沖,當(dāng)新增線程超過(guò)maximumPoolSize時(shí),會(huì)將新增線程暫時(shí)存放到該隊(duì)列中,需要的朋友可以參考下
    2023-12-12
  • Java如何定義Long類型

    Java如何定義Long類型

    這篇文章主要介紹了Java如何定義Long類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • JAVA設(shè)計(jì)模式之訪問(wèn)者模式詳解

    JAVA設(shè)計(jì)模式之訪問(wèn)者模式詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之訪問(wèn)者模式詳解,訪問(wèn)者模式是對(duì)象的行為模式,訪問(wèn)者模式的目的是封裝一些施加于某種數(shù)據(jù)結(jié)構(gòu)元素之上的操作,需要的朋友可以參考下
    2015-04-04
  • 在Java項(xiàng)目中實(shí)現(xiàn)日志輸出的技巧分享

    在Java項(xiàng)目中實(shí)現(xiàn)日志輸出的技巧分享

    日志是開(kāi)發(fā)過(guò)程中不可或缺的一部分,它可以幫助我們追蹤代碼的執(zhí)行過(guò)程、排查問(wèn)題以及監(jiān)控系統(tǒng)運(yùn)行狀況,然而,大多數(shù)開(kāi)發(fā)人員在編寫日志時(shí)往往只關(guān)注于輸出必要的信息,而忽略了日志的可讀性和美觀性,本文將介紹如何在Java項(xiàng)目中實(shí)現(xiàn)漂亮的日志輸出
    2023-10-10
  • java調(diào)用7zip解壓壓縮包的實(shí)例

    java調(diào)用7zip解壓壓縮包的實(shí)例

    下面小編就為大家?guī)?lái)一篇java調(diào)用7zip解壓壓縮包的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 聊聊Spring——AOP詳解(AOP概覽)

    聊聊Spring——AOP詳解(AOP概覽)

    這篇文章主要介紹了Spring——AOP詳解(AOP概覽),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • struts2中simple主題下<s:fieldError>標(biāo)簽?zāi)J(rèn)樣式的移除方法

    struts2中simple主題下<s:fieldError>標(biāo)簽?zāi)J(rèn)樣式的移除方法

    這篇文章主要給大家介紹了關(guān)于struts2中simple主題下<s:fieldError>標(biāo)簽?zāi)J(rèn)樣式的移除方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Java NIO:淺析IO模型_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java NIO:淺析IO模型_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    在進(jìn)入Java NIO編程之前,我們今天先來(lái)討論一些比較基礎(chǔ)的知識(shí):I/O模型。對(duì)java io nio相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2017-05-05
  • 解決MyBatis-Plus使用動(dòng)態(tài)表名selectPage不生效的問(wèn)題

    解決MyBatis-Plus使用動(dòng)態(tài)表名selectPage不生效的問(wèn)題

    這篇文章主要介紹了如惡化解決MyBatis-Plus使用動(dòng)態(tài)表名selectPage不生效的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • 徹底理解Spring注解@Autowired實(shí)現(xiàn)原理

    徹底理解Spring注解@Autowired實(shí)現(xiàn)原理

    這篇文章主要為大家詳細(xì)的介紹了Spring注解@Autowired實(shí)現(xiàn)的原理,縝密的邏輯分析,實(shí)踐應(yīng)用示例操作說(shuō)明,讓大家徹底的理解Spring注解@Autowired背后實(shí)現(xiàn)原理
    2022-03-03

最新評(píng)論

威远县| 渭源县| 明溪县| 化隆| 清河县| 沁水县| 霞浦县| 民勤县| 南雄市| 马山县| 台州市| 将乐县| 固阳县| 曲沃县| 西乌珠穆沁旗| 邛崃市| 新泰市| 藁城市| 平昌县| 安达市| 阿合奇县| 水城县| 包头市| 彝良县| 河曲县| 沙洋县| 榆林市| 藁城市| 衢州市| 德兴市| 安福县| 武穴市| 桂平市| 伊宁市| 尤溪县| 武城县| 平远县| 嘉禾县| 湟中县| 汉源县| 驻马店市|