`

JAVA String.format 方法使用介绍(生成序列号的时候很有用哦)

 
阅读更多

JAVA String.format 方法使用介绍

1.整数进行格式化%[index$][标识][最小宽度]转换方式
        我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字。我们来看看剩下2个部分的含义吧:

标识: 
'-'    在最小宽度内左对齐,不可以与“用0填充”同时使用
'#'    只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x
'+'    结果总是包括一个符号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)
'  '    正值前加空格,负值前加负号(一般情况下只适用于10进制,若对象为BigInteger才可以用于8进制和16进制)
'0'    结果将用零来填充
','    只适用于10进制,每3位数字之间用“,”分隔
'('    若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(同‘+
’具有同样的限制)

转换方式
d-十进制   o-八进制   x或X-十六进制

        上面的说明过于枯燥,我们来看几个具体的例子。需要特别注意的一点是:大部分标识字符可以同时使用

        System.out.println(String.format("%1$,09d", -3123));
        System.out.println(String.format("%1$9d", -31
));
        System.out.println(String.format("%1$-9d", -31
));
        System.out.println(String.format("%1$(9d", -31
));
        System.out.println(String.format("%1$#9x", 5689
));

//
结果为:
//
-0003,123
//
      -31
//
-31      
//
     (31)
//   0x1639



2.浮点数进行格式化%[index$][标识][最少宽度][.精度]转换方式
        我们可以看到,浮点数的转换多了一个“精度”选项,可以控制小数点后面的位数。

标识: 
'-'    在最小宽度内左对齐,不可以与“用0填充”同时使用
'+'    结果总是包括一个符号
'  '    正值前加空格,负值前加负号
'0'    结果将用零来填充
','    每3位数字之间用“,”分隔(只适用于fgG的转换)
'('
    若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于eEfgG的转换)

转换方式
'e', 'E'  --  结果被格式化为用计算机科学记数法表示的十进制数
'f'          --  结果被格式化为十进制普通表示方式
'g', 'G'    --  根据具体情况,自动选择用普通表示方式还是科学计数法方式
'a', 'A'    --   结果被格式化为带有效位数和指数的十六进制浮点数



3.字符进行格式化
        对字符进行格式化是非常简单的,c表示字符,标识中'-'表示左对齐,其他就没什么了。

4.百分比符号进行格式化
       
看了上面的说明,大家会发现百分比符号“%”是特殊格式的一个前缀。那么我们要输入一个百分比符号该怎么办呢?肯定是需要转义字符的,但是要注意的是,在这里转义字符不是“\”,而是“%”。换句话说,下面这条语句可以输出一个“12%”:
System.out.println(String.format("%1$d%%", 12));

5.取得平台独立的行分隔符
        System.getProperty("line.separator")可以取得平台独立的行分隔符,但是用在format中间未免显得过于烦琐了。于是format函数自带了一个平台独立的行分隔符那就是
String.format("%n")。

6.日期类型进行格式化
         以下日期和时间转换的后缀字符是为 't' 和 'T' 转换定义的。这些类型相似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定义的类型。提供其他转换类型是为了访问特定于 Java 的功能(如将 'L' 用作秒中的毫秒)。

以下转换字符用来格式化时间:

'H'     24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。
'I'     12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。
'k'     24 小时制的小时,即 0 - 23。
'l'     12 小时制的小时,即 1 - 12。
'M'     小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。
'S'     分钟中的秒,被格式化为必要时带前导零的两位数,即 00 - 60 ("60" 是支持闰秒所需的一个特殊值)。
'L'     秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。
'N'     秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。
'p'     特定于语言环境的 上午或下午 标记以小写形式表示,例如 "am" 或 "pm"。使用转换前缀 'T' 可以强行将此输出转换为大写形式。
'z'     相对于 GMT 的 RFC 822 格式的数字时区偏移量,例如 -0800。
'Z'     表示时区缩写形式的字符串。Formatter 的语言环境将取代参数的语言环境(如果有)。
's'     自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的秒数,即 Long.MIN_VALUE/1000 与 Long.MAX_VALUE/1000 之间的差值。
'Q'     自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的毫秒数,即 Long.MIN_VALUE 与 Long.MAX_VALUE 之间的差值。

以下转换字符用来格式化日期:
'B'     特定于语言环境的月份全称,例如 "January" 和 "February"。
'b'     特定于语言环境的月份简称,例如 "Jan" 和 "Feb"。
'h'     与 'b' 相同。
'A'     特定于语言环境的星期几全称,例如 "Sunday" 和 "Monday"
'a'     特定于语言环境的星期几简称,例如 "Sun" 和 "Mon"
'C'     除以 100 的四位数表示的年份,被格式化为必要时带前导零的两位数,即 00 - 99
'Y'     年份,被格式化为必要时带前导零的四位数(至少),例如,0092 等于格里高利历的 92 CE。
'y'     年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。
'j'     一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。
'm'     月份,被格式化为必要时带前导零的两位数,即 01 - 13。
'd'     一个月中的天数,被格式化为必要时带前导零两位数,即 01 - 31
'e'     一个月中的天数,被格式化为两位数,即 1 - 31。

以下转换字符用于格式化常见的日期/时间组合。
'R'     24 小时制的时间,被格式化为 "%tH:%tM"
'T'     24 小时制的时间,被格式化为 "%tH:%tM:%tS"。
'r'     12 小时制的时间,被格式化为 "%tI:%tM:%tS %Tp"。上午或下午标记 ('%Tp') 的位置可能与语言环境有关。
'D'     日期,被格式化为 "%tm/%td/%ty"。
'F'     ISO 8601 格式的完整日期,被格式化为 "%tY-%tm-%td"。
'c'     日期和时间,被格式化为 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"。

分享到:
评论

相关推荐

    JAVA生成订单号(日期+流水号)

    ### JAVA生成订单号(日期+流水号)的知识点解析 #### 一、概述 在现代电商及金融系统中,订单号作为唯一标识符扮演着...例如,可以引入序列号管理机制或使用数据库自增字段等技术手段来进一步优化订单号生成流程。

    MyEclipse7.0 注册码 序列号 Java版注册机源代码 MyEclipse7.0 下载地址

    1. **版权问题**:使用此代码生成序列号可能违反相关法律法规,请确保您已购买合法授权。 2. **安全性**:确保使用的序列号来源可靠,避免使用未知来源的序列号,以免引入恶意代码。 3. **技术支持**:官方支持可能...

    生成以日期开头,加4位数字,每次加1的工具类.如:201712140001

    在本例中,虽然没有直接关联到生成序列号的功能,但可能会被用来将这些序列号保存到文件或者从文件中读取历史序列号,以便在程序重启后能恢复正确的计数状态。 例如,`saveSequenceId()`和`loadSequenceId()`可能的...

    markdown文件中标题的序列号自动生成(非typora插件)

    首先,我们需要使用`Files.readAllLines()`方法读取整个Markdown文件的内容到一个`List<String>`中。 2. **解析Markdown文件** 创建一个正则表达式匹配Markdown标题,例如`^#+\s*(.*)$`,这将匹配任何以井号开头...

    根据当天日期自动生成单据号

    在IT行业中,尤其是在Java编程领域,自动生成单据号是一个常见的需求,特别是在财务系统、订单管理系统或者任何需要唯一标识业务实体的地方。这个需求通常涉及到日期处理、字符串格式化以及可能的序列号生成。下面...

    java生成32位的唯一标识

    总结起来,生成32位的唯一标识在Java中有多种方法,包括使用UUID并转换、自增序列或基于时间戳和随机数的混合方案。具体选择哪种方法取决于应用场景的具体需求,如唯一性要求、性能需求以及是否需要分布式环境下的...

    自动生成主键uuid.zip

    总结来说,"自动生成主键uuid.zip"中的内容可能涉及到如何在Java中使用UUID生成32位的无序和有序ID,这对于数据库主键或其他需要全局唯一标识的场景非常有用。通过理解UUID的生成机制和结合其他数据,开发者可以定制...

    Util.java 一些公共的Java方法

    在IT领域,尤其是在Java开发中,`Util.java`类扮演着关键角色,它封装了一系列公共方法,用于简化日常编程任务,提高代码复用性。从给定的文件信息来看,`Util.java`主要关注以下几个方面的功能:日期时间处理、字符...

    JAVA截屏代码

    本文将详细介绍如何使用Java进行屏幕截图,并提供一个具体的示例代码。 #### 二、关键概念 1. **`java.awt.Robot`**:这是一个类,可以模拟键盘和鼠标事件。此外,它还提供了一个方法`createScreenCapture`用于捕获...

    MyEclipse注册方法

    此段代码包含了一个名为`MyEclipseGen`的类,其中包含了用于生成序列号的方法。在`main`方法中,程序会提示用户输入注册名,然后调用`getSerial`方法生成序列号并输出。 #### 步骤三:运行代码生成序列号 运行上述...

    MyEclipse 6.5.1 GA 注册机源代码

    主函数调用了`getSerial`方法来生成序列号。其中`id`表示用户ID,`num`表示许可证数量。 ##### 3.3 getSerial 方法 ```java public static String getSerial(String userId, String version, String licenseNum, ...

    PDF转WORD,WORD转任何格式的JAVA代码调研报告。

    ### PDF转WORD与WORD转任何格式的JAVA代码调研报告 #### 一、引言 随着文档格式多样化的需求不断增加,...综上所述,掌握Aspose.PDF与Aspose.Word的使用方法对于从事文档处理工作的Java开发者来说是非常有价值的。

    myeclipse注册java编码

    该方法用于生成序列号。 ### 字符串处理与日期时间操作 在`getSerial`方法中,还涉及到了对字符串的操作和日期时间的处理: ```java java.util.Calendar cal = java.util.Calendar.getInstance(); cal.add(1, 3); ...

    myeclipse 注册码程序.txt

    - 调用`getSerial`方法生成序列号。 - 输出序列号(实际输出被截断)。 #### 三、关键代码解析 ##### 1. 序列号基础构建 ```java String verTime = new StringBuilder("-").append(new SimpleDateFormat("yyMMdd...

    屏幕拍照(Java)

    - `private static int serialNum`:用于记录生成截图的序列号,以便每个截图都有一个唯一的文件名。 - `Dimension d = Toolkit.getDefaultToolkit().getScreenSize()`:获取屏幕尺寸。 #### 构造方法解析 - **无...

    Myeclipse+7+M2注册码

    5. **转换**:使用`change`方法对最终的字符串进行简单的加密处理。 6. **返回结果**:返回最终生成的注册码。 ### 五、注意事项 - **版权保护**:在使用此类工具时需注意软件版权问题,避免违反相关法律法规。 - ...

    java关于文件的操作

    例如,使用`AtomicInteger`和`AtomicLong`来控制文件序列号的生成,确保在多线程环境下的原子性。 示例代码: ```java private static AtomicInteger fileSequenceNo = new AtomicInteger(0); private static ...

    MyEclipse万能注册

    值得注意的是,尽管这段代码可以生成序列号,但其合法性和适用性值得商榷。此外,这种做法可能会涉及到版权问题,正如代码中所警告的那样:“反编译受版权保护的软件违反了您的许可协议以及1998年的《数字千年版权法...

    快速解决code唯一码(java)的简便方法

    "快速解决code唯一码(java)的简便方法" ...快速解决code唯一码的简便方法可以使用Java语言实现,该方法使用系统变量服务和自增序列来生成唯一的代码唯一码。该方法简单、易用且高效,可以广泛应用于各种业务系统中。

    条形码生成

    在Java中,我们可以使用`barcode4j`库,它是Apache FOP的一部分,用于生成XML描述的条形码。以下是一个简单的Java示例: ```java import org.krysalis.barcode4j.impl.upc.UPCABean; import org.krysalis.barcode4j...

Global site tag (gtag.js) - Google Analytics