Java中Stringformat的用法.pdf

上传人:知****量 文档编号:23371821 上传时间:2022-06-30 格式:PDF 页数:10 大小:152.82KB
返回 下载 相关 举报
Java中Stringformat的用法.pdf_第1页
第1页 / 共10页
Java中Stringformat的用法.pdf_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《Java中Stringformat的用法.pdf》由会员分享,可在线阅读,更多相关《Java中Stringformat的用法.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、JavaJava 中中 String.formatString.format 的用法的用法JDK1.5中, String 类新增了一个很有用的静态方法 String.format(), 接下来作者将详细的分析 String.format 在 Java 中的用法。JDK1.5中,String 类新增了一个很有用的静态方法 String.format():format(Locale l, String format, Object. args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。format(String format, Object. args) 使用指定的格式字符串和参

2、数返回一个格式化字符串。1.对整数进行格式化:%index$标识最小宽度转换方式。我们可以看到,格式化字符串由4部分组成,其中%index$的含义我们上面已经讲过,最小宽度的含义也很好理解, 就是最终该整数转化的字符串最少包含多少位数字。 我们来看看剩下2个部分的含义吧:标标识:识:- 在最小宽度内左对齐,不可以与“用0填充”同时使用# 只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0 x+ 结果总是包括一个符号(一般情况下只适用于10进制,若对象为 BigInteger 才可以用于8进制和16进制) 正值前加空格,负值前加负号(一般情况下只适用于10进制,若

3、对象为 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(Strin

4、g.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)/0 x16392.2.对浮点数进行格式化:对浮点数进行格式化:%index$%index$标识标识最少宽度最少宽度.精度精度 转换方式转换方式我们可以看到,浮点数的转换多了一个“精度”选项,可以控制小数点后面的位数。标识:- 在最小宽度内左对齐,不可以与“用0填充”同时使用+ 结果总是包括一个符号 正值前加空格

5、,负值前加负号0 结果将用零来填充, 每3位数字之间用“,”分隔(只适用于 fgG 的转换)( 若参数是负数,则结果中不添加负号而是用圆括号把数字括起来(只适用于 eEfgG的转换)转换方式:e, E - 结果被格式化为用计算机科学记数法表示的十进制数f - 结果被格式化为十进制普通表示方式g, G - 根据具体情况,自动选择用普通表示方式还是科学计数法方式a, A - 结果被格式化为带有效位数和指数的十六进制浮点数3.3.对字符进行格式化:对字符进行格式化:对字符进行格式化是非常简单的,c 表示字符,标识中-表示左对齐,其他就没什么了。4.4.对百分比符号进行格式化:对百分比符号进行格式化:

6、看了上面的说明,大家会发现百分比符号“%”是特殊格式的一个前缀。那么我们要输入一个百分比符号该怎么办呢?肯定是需要转义字符的,但是要注意的是,在这里转义字符不是“”,而是“%”。换句话说,下面这条语句可以输出一个“12%”:System.out.println(String.format(%1$d%, 12);5.5.取得平台独立的行分隔符:取得平台独立的行分隔符:System.getProperty(line.separator)可以取得平台独立的行分隔符,但是用在format 中间未免显得过于烦琐了。于是 format 函数自带了一个平台独立的行分隔符那就是String.format(%n

7、)。6.6.对日期类型进行格式化:对日期类型进行格式化:以下日期和时间转换的后缀字符是为 t 和 T 转换定义的。 这些类型相似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定义的类型。提供其他转换类型是为了访问特定于 Java 的功能(如将 L 用作秒中的毫秒) 。举几个这个方法实用的例子(注释是输出结果):CODE:CODE:long now = System.currentTimeMillis();String s = String.format(%tR, now);/ 15:12CODE:CODE:/ Current month/day/yearD

8、ate d = new Date(now);s = String.format(%tD, d);/ 07/13/04CODE:CODE:s = String.format(%,d, Integer.MAX_VALUE); / 2,147,483,647CODE:CODE:s = String.format(%05d, 123);/ 00123是不是很方便,让人动心啊?哈哈,还有更多的效果!其实 format 函数有些类似 c 语言中 printf 函数,一些格式字符串与 C 类似,但已进行了某些定制,以适应 Java 语言,并且利用了其中一些特性。此方法提供了对布局对齐和排列的支持,以及对数值

9、、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持。支持诸如 byte、BigDecimal 和 Calendar 等常见 Java 类型。产生格式化输出的每个方法都需要格式字符串 和参数列表。格式字符串是一个String,它可以包含固定文本以及一个或多个嵌入的格式说明符。请考虑以下示例:Calendar c = .;String s = String.format(Dukes Birthday: %1$tm %1$te,%1$tY, c);格式字符串是 format 方法的第一个参数。它包含三个格式说明符 %1$tm、%1$te和%1$tY,它们指出应该如何处理参数以及在文本的什

10、么地方插入它们。格式字符串的其余部分是包括 Dukes Birthday: 和其他任何空格或标点符号的固定文本。 参数列表由传递给位于格式字符串之后的方法的所有参数组成。在上述示例中,参数列表的大小为 1,由新对象 Calendar 组成。1.1.常规类型、字符类型和数值类型的格式说明符的语法如下:常规类型、字符类型和数值类型的格式说明符的语法如下:%argument_index$flagswidth.precisionconversion可选的 argument_index 是一个十进制整数, 用于表明参数在参数列表中的位置。 第一个参数由 1$ 引用,第二个参数由 2$ 引用,依此类推。可

11、选的 flags 是修改输出格式的字符集。有效标志的集合取决于转换类型。可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。所需的 conversion 是一个表明应该如何格式化参数的字符。 给定参数的有效转换集合取决于参数的数据类型。2.2.用来表示日期和时间类型的格式说明符的语法如下:用来表示日期和时间类型的格式说明符的语法如下:%argument_index$flagswidthconversion可选的 argument_index、flags 和 width 的定义同上。所

12、需的 conversion 是一个由两字符组成的序列。第一个字符是 t 或 T。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由 GNU date 和 POSIXstrftime(3c) 定义的字符。3.3.与参数不对应的格式说明符的语法如下:与参数不对应的格式说明符的语法如下:%flagswidthconversion可选 flags 和 width 的定义同上。所需的 conversion 是一个表明要在输出中所插内容的字符。转转换换转换可分为以下几类:1. 常规 - 可应用于任何参数类型2.字符 - 可应用于表示 Unicode 字符的基本类型:char、Character

13、、byte、Byte、short 和 Short。当 Character.isValidCodePoint(int) 返回 true 时,可将此转换应用于 int 和 Integer 类型3. 数值1. 整数 - 可应用于 Java 的整数类型:byte、Byte、short、Short、int、Integer、long、Long 和 BigInteger2. 浮点 - 可用于 Java 的浮点类型:float、Float、double、Double 和 BigDecimal4. 日期/时间 - 可应用于 Java 的、能够对日期或时间进行编码的类型:long、Long、Calendar 和

14、Date。5. 百分比 - 产生字面值 % (u0025)6. 行分隔符 - 产生特定于平台的行分隔符下表总结了受支持的转换。由大写字符(如 B、H、S、C、X、E、G、A和T)表示的转换与由相应的小写字符的转换等同,根据流行的 Locale 规则将结果转换为大写形式除外。后者等同于 String.toUpperCase() 的以下调用。转换参数类别 说明b, B常规如果参数 arg 为 null,则结果为 false。如果 arg 是一个 boolean 值或 Boolean,则结果为 String.valueOf() 返回的字符串。否则结果为 true。h, H常规如 果 参 数arg为n

15、ull , 则 结 果 为null 。 否 则 , 结 果 为 调 用Integer.toHexString(arg.hashCode() 得到的结果。s, S常规如果参数 arg 为 null, 则结果为 null。 如果 arg 实现 Formattable, 则调用 arg.formatTo。否则,结果为调用 arg.toString() 得到的结果。c, C字符结果是一个 Unicode 字符d整数结果被格式化为十进制整数o整数结果被格式化为八进制整数x, X整数结果被格式化为十六进制整数e, E浮点结果被格式化为用计算机科学记数法表示的十进制数f浮点结果被格式化为十进制数g, G浮点

16、根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。a, A浮点结果被格式化为带有效位数和指数的十六进制浮点数t, T日期/时间日期和时间转换字符的前缀。请参阅日期/时间转换。%百分比结果为字面值 % (u0025)n行分隔符 结果为特定于平台的行分隔符H24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。I12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。k24 小时制的小时,即 0 - 23。l12 小时制的小时,即 1 - 12。M小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。S分钟中的秒,被格

17、式化为必要时带前导零的两位数,即 00 - 60 (60 是支持闰秒所需的一个特殊值) 。L秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。N秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。p特定于语言环境的 上午或下午 标记以小写形式表示,例如 am 或 pm。使用转换前缀 T可以强行将此输出转换为大写形式。z相对于 GMT 的 RFC 822 格式的数字时区偏移量,例如 -0800。Z表示时区缩写形式的字符串。Formatter 的语言环境将取代参数的语言环境(如果有) 。s自 协 调 世 界 时(UTC) 1970 年

18、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 和 Mondaya特定于语言环境的星期几

19、简称,例如 Sun 和 MonC除以 100 的四位数表示的年份,被格式化为必要时带前导零的两位数,即 00 - 99Y年份,被格式化为必要时带前导零的四位数(至少) ,例如,0092 等于格里高利历的 92 CE。y年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。j一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。m月份,被格式化为必要时带前导零的两位数,即 01 - 13。d一个月中的天数,被格式化为必要时带前导零两位数,即 01 - 31e一个月中的天数,被格式化为两位数,即 1 - 31。R24 小时制的时间,被格式化为

20、 %tH:%tMT24 小时制的时间,被格式化为 %tH:%tM:%tS。r12 小时制的时间,被格式化为 %tI:%tM:%tS %Tp。上午或下午标记 (%Tp) 的位置可能与语言环境有关。D日期,被格式化为 %tm/%td/%ty。FISO 8601 格式的完整日期,被格式化为 %tY-%tm-%td。c日期和时间,被格式化为 %ta %tb %td %tT %tZ %tY,例如 Sun Jul 20 16:17:00 EDT 1969。标志 常规字符 整数浮点日期/时间说明-yyyyy结果将是左对齐的。#y1-y3y-结果应该使用依赖于转换类型的替换形式+-y4y-结果总是包括一个符号

21、-y4y-对于正值,结果中将包括一个前导空格0-yy-结果将用零来填充,-y2y5-结果将包括特定于语言环境的组分隔符(-y4y5-结果将是用圆括号括起来的负数任何未明确定义为转换的字符都是非法字符,并且都被保留,以供将来扩展使用。日期日期/ /时间转换时间转换以下日期和时间转换的后缀字符是为 t 和 T 转换定义的。 这些类型相似于但不完全等同于那些由 GNU date 和 POSIXstrftime(3c) 定义的类型。提供其他转换类型是为了访问特定于 Java 的功能(如将 L 用作秒中的毫秒) 。以下转换字符用来格式化时间:以下转换字符用来格式化日期:以下转换字符用于格式化常见的日期/

22、时间组合。任何未明确定义为转换的字符都是非法字符,并且都被保留,以供将来扩展使用。标标志志下表总结了受支持的标志。y 表示该标志受指示参数类型支持。1 取决于 Formattable 的定义。2 只适用于 d 转换。3 只适用于 o、x 和 X 转换。4 对 BigInteger 应用 d、o、x 和 X 转换时,或者对 byte 及 Byte、short及 Short、int 及 Integer、long 及 Long 分别应用 d 转换时适用。5 只适用于 e、E、f、g 和 G 转换。任何未显式定义为标志的字符都是非法字符,并且都被保留,以供扩展使用。宽度宽度是将向输出中写入的最少字符数

23、。对于行分隔符转换,不适用宽度,如果提供宽度,则会抛出异常。精度对于常规参数类型,精度是将向输出中写入的最多字符数。对于浮点转换 e、E 和 f,精度是小数点分隔符后的位数。如果转换是 g 或G,那么精度是舍入计算后所得数值的所有位数。如果转换是 a 或 A,则不必指定精度。对于字符、整数和日期/时间参数类型转换,以及百分比和行分隔符转换,精度是不适用的;如果提供精度,则会抛出异常。参数索引参数索引是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 1$ 引用,第二个参数由 2$ 引用,依此类推。根据位置引用参数的另一种方法是使用 (u003c) 标志,这将会重用以前格式说明符的参数。例如,以下两条语句产生的字符相同:Calendar c = .;String s1 = String.format(Dukes Birthday: %1$tm %1$te,%1$tY, c);String s2 = String.format(Dukes Birthday: %1$tm %$te,%$tY, c);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁