package io; import java.util.GregorianCalendar; import java.util.TimeZone; /** * Java 的格式化输出 * Java 的格式化输出一般用于下面几种情况 * (1)String.format(String formatter,agr...) * (2)System.out.printf(String formatter,agr...) * (3)PrintWriter.printf(String formatter,agr...) * 上面三种典型用法中,都是根据一个字符串格式的formatter和一个参数列表,获得一个格式化的字符串. * 其功能类似于c语言中的pringf函数. * 参数formatter有固定的语法,主要语法有下面三种: * * (1)常规类型、字符类型和数值类型的格式说明符的语法如下: * * %[argument_index$][flags][width][.precision]conversion * * %: 这个是参数转换格式化串的起点 * argument_index$: 由argument_index和$构成,表示使用后面参数列表中第argument_index参数来获取格式化字符 * flags: 是一些标志,比如 - 可以将参数左对齐,这个根据后面参数的具体类型有不同的标志可选用 * width: 表示将后面参数格式化后的宽度,比如宽度为3,并使用-作为flag后,格式化整数5后,得到的字符串为"5 ",即5后面加2空格 * .precision: 表示精度,这个一般针对浮点数,比如3.1415929 使用"%.2f"格式化之后得到3.14 * conversion:是格式化规则,比如上面的"%.2f"中的f就是一个规则,f只能对应浮点型参数,否则会抛异常 * conversion也是参数格式化串的终点 * * 上面format(String formatter,agr...)中的formatter可以包含很多的参数格式化串, * 也可以包含非格式化串,这些非格式化串字符将按照原样输出. * * 比如调用format("小明今年 %2$-3d岁,生于 %1$-5d年.",1994,20) * 得到的格式化之后的字符串为:小明今年 20 岁,生于 1994 年. * 注意,上面的formatter中包含两个格式化串:%2$-3d 和 %1$-5d,都是以%开头,d(conversion)结尾的. * 其他部分,是非格式化串字符,比如"小明今年 "则按原样输出. * %2$-3d中的2$表示使用后面的第二个参数,也就是20.注意这里20是2个宽度,而-3表示格式化成3个宽度并且左对齐, * 这样得到的输出就是"20 岁",20和岁之间加了一个空格,以是的20格式化之后的宽度变成3. * * (2)用来表示日期和时间类型的格式说明符的语法如下: * * %[argument_index$][flags][width]conversion * * 这个跟上面的有两点区别:首先,格式化时间不需要[.precision]这个了; * 其次,格式化时间的conversion 有特殊要求,即,必须要在前面加一个t或T. * 有一些专门的conversion用于格式化时间,使用这些conversion时,需要在前面加一个t * * 比如, * Calendar c = new GregorianCalendar(1984, 6, 4); * String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c); * 这里%1$tm中的m是conversion,表示输出两位数月份,t是前缀. * 格式化之后得到:Duke's Birthday: 07 4,1984 * * (3)与参数不对应的格式说明符的语法如下: * * %[flags][width]conversion * * 这个与前面(1)的区别是去掉了[argument_index$]和[.precision]表示: * 首先,不能指定参数位置与格式化串的对应关系,则使用格式化串的位置寻找后面对应位置的参数 * format("小明今年 %-3d岁,生于 %-5d年.",1994,20) * 上面的格式化串%-3d位置为1,则使用第一个参数1994来获取格式化串, * 最终返回"小明今年 1994岁,生于 20 年." 这样就不对了. * 所以,后面的参数位置要和前面的格式化串对应.改成: * format("小明今年 %-3d岁,生于 %-5d年.",20,1994) * * */ public class TestStringFormat { public static void main(String[] args) { //格式化输出整数 String str1 = String.format("小明今年 %2$-3d岁,生于 %1$-5d年.",1994,20); System.out.println(str1); //输出:小明今年 20 岁,生于 1994 年. //没有参数对应时,要让格式化串和参数的顺序对应好 str1 = String.format("小明今年 %-3d岁,生于 %-5d年.",20,1994,20); System.out.println(str1); //输出:小明今年 20 岁,生于 1994 年. //没有参数对应时,参数数量少于格式化串数量时,格式化串变成空, //参数多了则没关系(参考上面的20,1994,20三个参数只用到了两个) //有参数对应时,如果用3$指定了第三个参数,而参数列表中只有2个参数则会报错 //str1 = String.format("小明今年 %2$-3d岁,生于 %1$-5d年.",1994);//这样的报错 //格式化日期,时间 GregorianCalendar c = new GregorianCalendar(1984, 6, 4,12,22,33);//构造制定日期时间的日历 c.setTimeZone(TimeZone.getTimeZone("GMT+8")); c.setTimeInMillis(System.currentTimeMillis());//设置为当前日期时间 str1 = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c); System.out.println(str1);//输出:Duke's Birthday: 02 27,2014 str1 = String.format("Time: %1$tH:%1$tM:%1$tS",c); System.out.println(str1);//输出: Time: 20:19:09 //格式化浮点数,如果浮点数格式化后小数位数小于原来的值,则是按照四舍五入方式 舍弃的 str1 = String.format("π值为 %1$s,浮点数为:%1$f,精确到3位小数为:%1$.3f", 3.1415926); System.out.println(str1);//输出:π值为 3.1415926,浮点数为:3.141593,精确到3位小数为:3.142 //格式化输出数组,左对齐,每个整数占5个宽度 int[][] dataArr = {{1,2,3},{4,5,6}}; for(int i=0;i<2;i++) { for(int j=0;j<3;j++) { System.out.printf("%-5d",dataArr[i][j]); } System.out.println(""); } /* * 输出: * 1 2 3 * 4 5 6 */ } }
相关推荐
在Java编程语言中,`printf`方法是`PrintStream`类的一个重要成员,它提供了类似于C语言中的格式化输出功能。这个方法允许我们以灵活的方式控制输出内容的格式,包括精度、宽度、对齐方式等。`moneytzb`可能是指特定...
Java格式化输出.txt
在Java编程中,格式化输出数字是一项常见的任务,特别是在数据展示和报表生成中。`java.text.DecimalFormat` 类是Java提供的一个强大工具,用于精确控制数字的显示方式。以下是对标题和描述中所述知识点的详细解释:...
char n='150cm'; System.out.format("身高:%s", n); 举个例子 只要在双引号填加自己想说的话就好了 逗号后用来输出变量 占位符 说明 %d 格式化输出整数 %f 格式化输出浮点数 ...%s 格式化输出字符串
总结来说,Java格式化XML文件涉及的主要知识点有:XML解析器的使用,如`DocumentBuilderFactory`和`DocumentBuilder`;`TransformerFactory`和`Transformer`用于XML的转换,包括设置输出属性;以及`Source`和`Result...
对于独立使用,可以直接通过命令行运行jar包,比如使用`java -jar SQLinForm.jar <input_sql_file> <output_sql_file>`,其中`<input_sql_file>`是包含原始SQL的文件,`<output_sql_file>`则是格式化后SQL的输出文件...
java组件开发(14) 格式化输出
Java格式化输出 Java中格式化输出是指使用格式化字符串和参数列表来输出想要的结果。Java中提供了多种方式来实现格式化输出,如System.out.printf()方法、String.format()方法、java.util.Formatter类等。 格式化...
Java 字符串日期数字格式化输出 Java 中的字符串日期数字格式化输出是一种常见的操作,特别是在数据输出和显示时。 Java 提供了多种方式来实现格式化输出,包括使用 NumberFormat、DecimalFormat 和 ...
在给定的标题“SQL格式化功能(JAVA代码)”中,我们聚焦于一个特定的Java实现,它从Hibernate库中抽取了用于SQL格式化的功能,并且不依赖任何第三方jar包。 `Hibernate`是一个流行的Java ORM(对象关系映射)框架...
在Java编程语言中,控制输出...总结来说,`NumberFormat`和`java.math`包的`BigInteger`、`BigDecimal`类是Java中处理格式化输出和高精度计算的关键工具。它们提供了丰富的功能,确保了在各种场景下的灵活性和精度。
java常规类型的格式化.doc ) 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
将浮点型数用美元符号和货币符号输出,用格式化的方式。还包括浮点型数据相除时,格式化输出结果。
"标签"进一步强调了这个工具的关键特性,包括"Java输出漂亮的SQL语句",这意味着它是一个Java环境下的解决方案,能够集成到Java项目中,通过Java代码来调用和实现SQL语句的格式化。另一个标签"SQL格式化"则明确了它...
当前的系统时间的格式化输出,包括中国时间和美国时间,并且是按照不同的两种方式输出的.
Java日期格式化是Java开发中常见的一项任务,它涉及到日期和时间的处理,尤其是在数据输入输出、用户界面显示以及数据库交互等场景。Java提供了一系列的类来帮助我们完成日期和时间的格式化工作,其中最常用的包括`...
Java编程语言中,字符串、日期和数字的格式化输出是一个重要的概念,特别是在处理用户界面输出或者数据记录时。虽然在C语言中可以使用`printf`函数进行格式化输出,但Java的标准输出`System.out.println()`并没有...
格式化程序可以作用于整个文件、有限行 ( --lines)、特定偏移量 ( --offset)、传递到标准输出(默认)或就地更改 ( --replace)。 要重新格式化特定补丁中更改的行,请使用 google-java-format-diff.py. 注意: ...
3. 如果一切顺利, Jacobe 会按照Sun标准格式重新格式化`your_file.java`,并覆盖原文件,或者你可以选择输出到新的文件。 在实际开发中,为了保证代码风格的一致性,许多开发团队会在版本控制系统(如Git)的pre-...
1. **Java格式化输出**: 题目中的第一题涉及到了Java的格式化输出。`System.out.printf`方法用于格式化输出,其中`%7.3f`表示保留小数点后三位,总宽度为7的浮点数。因此,正确答案是`System.out.printf("|%7.3f| ...