转自  https://blog.csdn.net/u010137760/article/details/82869637

1.代码中简单使用
2.源码调用的方法
3.相关类-Formatter
3.1可选的参数索引
3.2可选的标记
3.3可选的宽度
3.4可选的精度
3.5强制类型转换
3.1非日期/时间转换类型
3.1.1字符串转换
3.1.2字符转换
3.1.3整数转换
3.1.4浮点数转换
3.1.5布尔值转换
3.1.6hash值转换
3.1.7无参转换
3.2日期/时间转换
1.代码中简单使用
String.format("%.2f", 2.0f);
1
1
2.源码调用的方法
* Returns a localized formatted string, using the supplied format and arguments,
* 返回本地化格式的字符串,使用提供的格式和参数
* using the user's default locale.
* 使用用户默认的本地语言环境
* <p>If you're formatting a string other than for human
* consumption, you should use the {@code format(Locale, String, Object...)}
* 格式化字符串如果使用其他语言环境,你应该使用format(Locale, String, Object...)
* overload and supply {@code Locale.US}. See
* "<a href="../util/Locale.html#default_locale">Be wary of the default locale</a>".
*
* @param format the format string (see {@link java.util.Formatter#format})
* @param args
* the list of arguments passed to the formatter. If there are
* more arguments than required by {@code format},
* additional arguments are ignored.
* @return the formatted string.
* @throws NullPointerException if {@code format == null}
* @throws java.util.IllegalFormatException
* if the format is invalid.
* @since 1.5
*/
public static String format(String format, Object... args) {
return format(Locale.getDefault(), format, args);
}

public static String format(Locale locale, String format, Object... args) {
if (format == null) {
throw new NullPointerException("format == null");
}
int bufferSize = format.length() + (args == null ? 0 : args.length * 10);
Formatter f = new Formatter(new StringBuilder(bufferSize), locale);
return f.format(format, args).toString();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
3.相关类-Formatter
在Formatter类的释义中有如下信息:

Format strings consist of plain text interspersed with format specifiers, such as {@code “name: %s weight: %03dkg\n”}. Being a Java string, the usual Java string literal backslash escapes are of course available.

格式字符串由纯文本组成,其中穿插了格式说明符,如"name: %s weight: %03dkg\n"中的%s、%03d。作为java字符串,反斜杠转移符也是支持的

Format specifiers (such as {@code “%s”} or {@code “%03d”} in the example) start with a {@code %} and describe how to format their corresponding argument. It includes an optional argument index, optional flags, an optional width, an optional precision, and a mandatory conversion type.

格式说明符以%开头,描述如何格式化相应参数。格式说明符包括可选的参数索引、可选的标记、可选的宽度、可选的精度、强制类型转换

3.1可选的参数索引
标记 作用 例子 结果
%2$s中的2指定显示第2个参数 format("%2s, s,%1s,s",“小明”,“小李”) 小李,小明
< 复用同一个参数 format("%o %<d %<x", 64); 100 64 40
3.2可选的标记
标记 作用 例子 结果
, 分割大数据 format("%,d", 1024); 1,234
+ 总是显示正数、负数符号 format("%+d, %+4d", -5, 5); -5,   +5
非负数有一个前导空格 String.format(“x% d% 5d”, 4, -4); x 4   -4
( 把括号括在负数上 format("%(d, %(d, %(6d", 12, -12, -12); 12, (12),   (12)
- 对齐
需要宽度;
-默认右对齐,-号左对齐; format("%-6dx", 5);
format("%-3C,%3C", ‘d’, 0x65); 5     x
D  ,  E
0 用前导零填充数字 format("%07d, %03d", 4, 5555); 0000004, 5555
# 变形
仅八进制、十六进制; format("%o %#o %d", 010, 010,010);
format("%x %#x %d", 0x12, 0x12,0x12); 10 010 8
12 0x12 18
3.3可选的宽度
The width is a decimal integer specifying the minimum number of characters to be used to represent the argument.

宽度是一个十进制整数,指定参数显示的最小字符数。
注:不能使用宽度来截断字段

标记 作用 例子 结果
5前面有两个空格 format("%3d",5);   5
3.4可选的精度
The precision is a {@code .} followed by a decimal integer

精度是.后面跟的整形数字

标记 作用 例子 结果
. 小数点后面跟几位 format("%.1f", 123.456f); 123.5
3.5强制类型转换
3.1非日期/时间转换类型
3.1.1字符串转换
标记 作用 例子 结果
s 字符串 format("%s %s", “hello”, “Hello”); hello Hello
S 大写字符串 format("%S %S", “hello”, “Hello”); HELLO HELLO
3.1.2字符转换
标记 作用 例子 结果
c 字符 format("%c %c", ‘d’, ‘E’); d E
C 大写字符 format("%C %C", ‘d’, ‘E’); D E
3.1.3整数转换
标记 作用 例子 结果
d 十进制 format("%d", 26); 26
o 八进制 format("%o", 032); 32
x 十六进制 format("%x %X", 0x1a, 0x1a); 1a 1A
3.1.4浮点数转换
标记 作用 例子 结果
f 十进制小数 format("%f", 123.456f);
format("%.1f", 123.456f);
format("%1.5f", 123.456f);
format("%10f", 123.456f);
format("%6.0f", 123.456f); 123.456001
123.5
123.45600
123.456001
   123
e,E 指数浮点数 format("%e", 123.456f);
format("%.1e", 123.456f);
format("%1.5E", 123.456f);
format("%10E", 123.456f);
format("%6.0E", 123.456f); 1.234560e+02
1.2e+02
1.23456E+02
1.234560E+02
 1E+02
g,G 十进制或指数取决于数的大小 format("%g %g", 0.123, 0.0000123); 0.123000 1.23000e-05
a,A 十六进制小数 format("%a", 123.456f); 0x1.edd2f2p6
3.1.5布尔值转换
支持Boolean值。null被认为是false,其他类型实例为true

标记 作用 例子 结果
b,B 布尔值 format("%b %b", true, false);
format("%B %B", true, false);
format("%b", null);
format("%b", “hello”); true false
TRUE FALSE
false
true
3.1.6hash值转换
调用参数的hashCode方法,支持所有类型

标记 作用 例子 结果
h,H 十六进制hashcode format("%h", this);
format("%H", this);
format("%h", null); 190d11
190D11
null
3.1.7无参转换
标记 作用 例子 结果
% 输出%字符 format("%d%%", 50); 50%
n 换行 format(“first%nsecond”); first\nsecond
3.2日期/时间转换
日历、日期、毫秒值均可以作为日期/时间参数。如果类型有错误,则返回1970-01-01 00:00:00 UTC

标记 作用 例子 结果
ta 周内第几天(缩写) format("%ta", cal, cal); Tue
tA 周内第几天(全) format("%tA", cal, cal); Tuesday
tb 月份第几月(缩写)) format("%tb", cal); Apr
tB 月份第几月(全) format("%tB", cal); April
tc 时间,请勿使用 format("%tc", cal); Tue Apr 01 16:19:17 CEST 2008
tC 世纪,两位数 format("%tC", cal); 20
td 月份第几天,两位数 format("%td", cal); 01
tD 美国日期格式,请勿使用 format("%tD", cal); 04/01/08
te 月中的1天(1-31) format("%te", cal); 1
tF ISO 8601标准下的全面日期格式(YYYY-MM-DD) format("%tF", cal); 2008-04-01
th %tb的同义词
tH 2位数表示小时,24小时制(00-23) format("%tH", cal); 16
tI 2位数表示小时,12小时制(01-12) format("%tI", cal); 04
tj 三位数表示一年中的第几天(001-366) format("%tj", cal); 092
tk 表示小时,24小时制(0-23) format("%tk", cal); 16
tl 表示小时,12小时制(1-12) format("%tl", cal); 4
tL 毫秒数 format("%tL", cal); 359
tm 2位数一年中的第几个月(01-12) format("%tm", cal); 04
tM 2位数分钟 format("%tM", cal); 08
tN 纳秒 format("%tN", cal); 359000000
tp 上午或下午 format("%tp %Tp", cal, cal); pm PM
tQ 自时代以来的毫秒值 format("%tQ", cal); 1207059412656
tr 完整的12小时时间 %tI:%tM:%tS %Tp format("%tr", cal); 04:15:32 PM
tR 短时24小时制 format("%tR", cal); 16:15
ts 自时代以来的秒值 format("%ts", cal); 1207059412
tS 两位数秒(00-60) format("%tS", cal); 17
tT 完整24小时制 %tH:%tM:%tS format("%tT", cal); 16:15:32
ty 两位数年(00-99) format("%ty", cal); 08
tY 四位数年 format("%tY", cal); 2008
tz 时间区格林尼治时间偏移 format("%tz", cal); +0100
tZ 本地时区缩写 format("%tZ", cal); CEST

---------------------
作者:洛漠O_o
来源:CSDN
原文:https://blog.csdn.net/u010137760/article/details/82869637
版权声明:本文为博主原创文章,转载请附上博文链接!

String.format方法使用-浅析(转)的更多相关文章

  1. VFP自定义函数StringFormat (仿.NET String.Format 方法)

    VFP仿.NET String.Format 方法 将指定字符串中的每个{x}替换为相应值,并返回文本 *-- 调用格式 StringFormat("日期{2},字符{1}",&q ...

  2. php示例代码之类似于C#中的String.Format方法

    php示例代码之类似于C#中的String.Format方法 原文来自于  http://stackoverflow.com/questions/1241177/c-string-format-equ ...

  3. 避免string.Format方法的装箱

    我们知道,使用string.Format方法可能会存在装箱的情况.比如如下: static void Main(string[] args) { string s = string.Format(&q ...

  4. Java中利用MessageFormat对象实现类似C# string.Format方法格式化

    我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使 ...

  5. java字符串格式化:String.format()方法的使用

    转自:http://kgd1120.iteye.com/blog/1293633 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的读者应 ...

  6. Java基础(三十五)Math、Random类和数字格式化(String.format方法)

    一.Math类 Math类常用的方法: public static long abs (double a) 返回a的绝对值 public static double max (double a,dou ...

  7. Java String.Format() 方法及参数说明

    转自:https://blueram.iteye.com/blog/441683 JDK1.5中,String类新增了一个很有用的静态方法String.format():format(Locale l ...

  8. 如何在string.Format()方法中输出大括号

    在string.Format参数中,大括号{}是有特殊意义的符号,但是如果我们希望最终的结果中包含大括号({}),那么我们需要怎么做呢?是”\{”吗?很遗憾,运行时,会给你一个Exception的!正 ...

  9. C#中的String.Format方法(转)

    一.定义String.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项. 如: (1)string p1 = "Jackie";strin ...

随机推荐

  1. 关于 Scrapy 中自定义 Spider 传递参数问题

    实际应用中,我们有可能在启动 Scrapy 的时候自定义一些参数来控制不同的业务流程,Google 尝试了如下方式可以实现 . 修改 Spider 构造函数  class myspider(Spide ...

  2. JSTL+EL表达式+JSP自定义框架案例

    不会框架不要紧,我带你自定义框架 前言:这标题说的有点大了,当一回标题党,之前在学JSP的时候提到了JSTL和EL表达式,由于一直钟情于Servlet,迟迟没有更新别的,这回算是跳出来了.这回放个大招 ...

  3. VS2017新建项目的模板之配置

    也不知道之前装VS2017的时候,做了什么操作,新建一个WinForm项目,自动记住了我当时新建的窗体的大小816*639(默认的300*300),现在每次新建窗体都这个大小,忍了一段时间,实在忍无可 ...

  4. xshell使用zmodem拖拽上传

    一.目的 windows向centos_linux服务器上传文件可以用ftp上传,但是没zmodem方便,zmodem拖拽上传,可以上传到指定的目录下. 二.安装使用 执行下面的命令安装后就可以使用了 ...

  5. 十七:迭代器模式详解(foreach的精髓)

    定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示. 从定义中可以看出,迭代器模式是为了在不暴露该对象内部表示的情况下,提供一种顺序访问聚合对象中元素的方法.这种思想在JA ...

  6. 针对JCC指令练习的堆栈图

    堆栈图,主要目的就是练习一下JCC指令的熟练度,供参考 版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-09-10,23:41:41.作者By-----溺心与沉浮----博客园 ...

  7. 将流数据输出到Mysql中

    outputMysqlApp.scala import java.sql.DriverManager import org.apache.spark.SparkConf import org.apac ...

  8. python 环境配置的导入与导出

    Python——配置环境的导出与导入   导出Python环境安装包[root@bogon ~]# pip freeze > packages.txt这将会创建一个 packages.txt文件 ...

  9. liteos双向链表(十二)

    1. 概述 1.1 基本概念 双向链表是指含有往前和往后两个方向的链表,即每个结点中除存放下一个节点指针外,还增加一个指向其前一个节点的指针.其头指针head是唯一确定的. 从双向链表中的任意一个结点 ...

  10. Java八大排序之插入排序

    插入排序 也可叫直接插入排序,该算法的思路是:初始可认为文件中的第1个记录已排好序,然后将第2个到第n个记录依次插入到已排序的记录组成的文件中. 步骤: 假设有一组数组为(数组下标0—n-1): ar ...