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));
          System.out.println(String.format("%02x", i));//取两位数的16进制

//结果为:
//-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"。

原文地址: https://blog.csdn.net/zhuyouleixuexi/article/details/8926969

JAVA中String.format的用法 转16进制,还可以补0的更多相关文章

  1. JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,

    1.对整数进行格式化:%[index$][标识][最小宽度]转换方式        我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解, ...

  2. jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程(转)

    原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jd ...

  3. Linux c字符串中不可打印字符转换成16进制

    本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...

  4. 安卓、IOS端AEC密钥加密 Java端密钥解密通用实现(16进制表现形式)

    由于业务需求,需要实现在客户端对重要信息进行加密,在服务端进行解密.客户端包括IOS和安卓的 服务端位Java. 注意密钥 需要保持一致,可以自己定义 . 安卓端加密代码: ============= ...

  5. js中如何把RGB颜色转换为16进制颜色

    将RGB颜色值转换为16进制颜色值,主要是将 R.G.B 值分别转换为对应的十六进制值,填入 #RRGGBB 中. 推荐在线颜色转换工具:http://www.ecjson.com/rgbhex/ 例 ...

  6. java字符串MD5加密后再转16进制

    话不多说上码 pom.xml <!-- MD5 --> <dependency> <groupId>org.apache.commons</groupId&g ...

  7. JAVA中String.format()的使用

    String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.format()方法有两种重载形式:1.format(String format, Object... args) 新 ...

  8. java中String类的用法

    1.String String类很常用,很重要. String不像int或float, 它是参考类型.final类型, 不能被继承,String is a Reference Type,Defined ...

  9. Java对文件的16进制读取和操作

    大家可以参考一下源代码的相关部分注释,然后写出自己的16进制处理程序.有几个重点地方: 16进制字符串->10进制数 int input = Integer.parseInt("Str ...

随机推荐

  1. [Python]conda与 virtualenv虚拟环境配置

    参考: Anaconda使用总结 Anacodna之conda与 virtualenv对比使用教程,创建虚拟环境 conda设置Python虚拟环境 python的virtualenv环境与使用 有时 ...

  2. 过滤器中处理multipart/form-data头部的post请求request.getParameter(")获取不到参数问题

    如果不是文件类型请求,我们使用request.getParameter("");方法是可以获取到参数内容的,如果是文件类型的请求即请求的头部信息为“multipart/form-d ...

  3. Python3 BP神经网络

    转自麦子学院 """ network.py ~~~~~~~~~~ A module to implement the stochastic gradient descen ...

  4. Redis PK Memcached

    没有必要过多的关心性能,因为二者的性能都已经足够高了.由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一 个核上Redis在存储小数据时比Memcached性能更高.而 ...

  5. 添加第一个控制器(Controllers)

    在MVC体系架构中,输入请求是由控制器Controller来处理的(负责处理浏览器请求,并作出响应).在ASP.NET MVC中Controller本身是一个类(Class)通常继承于System.W ...

  6. 洛谷P1133 教主的花园

    题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值. 教主最喜欢3种树,这3种树 ...

  7. 群晖NAS简介(转)

    Synology 群晖科技(Synology )创立于 2000 年,自始便专注于打造高效能.可靠.功能丰富且绿色环保的 NAS 服务器,是全球少数几家以单纯的提供网络存储解决方案获得世界认同的华人企 ...

  8. SWD Connect/Transfer Source Code

    Serial Wire Debug interface The Serial Wire Debug protocol operates with a synchronous serial interf ...

  9. USB with NXP Microcontrollers

    USB with NXP Microcontrollers NXP Advantages NXP's microcontroller portfolio features the latest USB ...

  10. android adb命令 unable to connect to 192.168.1.155:5555

    如果使用有线网络无法用adb connect命令连接设备的话,可以选择使用无线wifi来连接. 首先在android设备上装一个叫做Adb Wireless的软件,打开wifi,然后打开adb wir ...