-
2021-02-25 20:16:11
在javaSE5中推出了printf方法来输出文本到控制台,在java中现在有如下方法可以输出文本:
1、System.out.println(、、、、) //输出并换行
2、System.out.format("%d,%f",1,1.1); //格式化输出
3、System.out.printf("%d,%f",1,1.1); //格式化输出
4、System.out.print(、、、) //输出不换行
在java中,格式化方法也有一个专门的类,它的名字叫做Fomatter类
import java.util.Formatter.*;
构造方法如下:
Formatter k = new Fomatter();
Formatter s = new Fomatter(PrintStream os); //os一般都是文件类或者System.out
他有一个构造方法,为format(format String , data);当使用两种不同的构造方法时,作用的结果不同。
1、当省略参数时,它会返回一个格式化过后的字符串
2、当传入参数为输出流时,它会将格式化字符串写入流中
当仅仅使用一次format格式化时,可以用SE5的静态方法String.format(String format,data) 方法会更好一些,//其实这个方法的内部也是创建一个Formatter 对象、、不过这样比较容易理解
注:%X表示十六进制数
(随着不断学习不断更新、、、)
【转】java格式化输出 printf 例子
[转]java格式化输出 printf 例子 转自http://www.cnblogs.com/Ta
更多相关内容 -
Java格式化输出的四种方法
2021-01-19 19:56:58Java SE5推出了C语言printf()风格的格式化输出功能。 String str="Java"; double pi=3.14; int i=100; //"%"表示进行格式化输出,其后是格式的定义 System.out.printf("%f\n",pi);//"f"表示格式化输出浮点数 System....一、System.out.printf()
Java SE5推出了C语言printf()风格的格式化输出功能。
String str="Java"; double pi=3.14; int i=100; //"%"表示进行格式化输出,其后是格式的定义 System.out.printf("%f\n",pi);//"f"表示格式化输出浮点数 System.out.printf("%d\n",i);//"d"表示格式化输出十进制整数 System.out.printf("%o\n",i);//"o"表示格式化输出八进制整数 System.out.printf("%x\n",i);//"x"表示格式化输出十六进制整数 System.out.printf("%s\n",str);//"s"表示格式化输出字符串 System.out.printf("一个字符串:%s,一个浮点数:%f,一个整数:%d",str,pi,i);//可以一次输出多个变量,注意顺序即可
二、System.out.format()Java SE5引入的format()方法模仿C的printf()方法,可用于PrintStream或者PrintWriter对象,包括System.out对象。用法基本上和System.out.printf()类似。
String str="Java"; double pi=3.14; int i=100; //"%"表示进行格式化输出,其后是格式的定义 System.out.format("%f\n",pi);//"f"表示格式化输出浮点数 System.out.format("%d\n",i);//"d"表示格式化输出十进制整数 System.out.format("%o\n",i);//"o"表示格式化输出八进制整数 System.out.format("%x\n",i);//"x"表示格式化输出十六进制整数 System.out.format("%s\n",str);//"s"表示格式化输出字符串 System.out.format("一个字符串:%s,一个浮点数:%f,一个整数:%d",str,pi,i);//可以一次输出多个变量,注意顺序即可
三、Fomatter类Java中所有的格式化功能都由java.util.Formatter类处理。当你创建一个Formatter对象时 ,需要向其构造器传递一些信息,告诉它最终的结果将向哪里输出。
import java.util.Formatter;//使用Formatter类时需要导入java.util.Formatter Formatter f=new Formatter(System.out);//创建一个Formatter对象,指定输出为System.out String str="Java"; double pi=3.14; int i=100; //"%"表示进行格式化输出,其后是格式的定义 f.format("%f\n",pi);//"f"表示格式化输出浮点数 f.format("%d\n",i);//"d"表示格式化输出十进制整数 f.format("%o\n",i);//"o"表示格式化输出八进制整数 f.format("%x\n",i);//"x"表示格式化输出十六进制整数 f.format("%s\n",str);//"s"表示格式化输出字符串 f.format("一个字符串:%s,一个浮点数:%f,一个整数:%d",str,pi,i);//可以一次输出多个变量,注意顺序即可
四、String.format()
String.format()是一个static方法,接收与Formatter.format()一样的参数,其返回值:String对象,适用于一次输出。
String str="Java"; double pi=3.14; int i=100; //"%"表示进行格式化输出,其后是格式的定义 System.out.println(String.format("%f",pi));//"f"表示格式化输出浮点数 System.out.println(String.format("%d",i));//"d"表示格式化输出十进制整数 System.out.println(String.format("%o",i));//"o"表示格式化输出八进制整数 System.out.println(String.format("%x",i));//"x"表示格式化输出十六进制整数 System.out.println(String.format("%s",str));//"s"表示格式化输出字符串
-
java 格式化日期字符串
2022-01-06 15:44:391. 字符串转换为日期 public Date parseDate(String strDate,String pattern){ if(strDate==null || pattern==null || "".equals... throw new IllegalArgumentException("字符串或日期格式为空"); } Date d1. 字符串转换为日期
public Date parseDate(String strDate,String pattern){ if(strDate==null || pattern==null || "".equals(strDate.trim()) ||"".equals(pattern.trim()) ){ throw new IllegalArgumentException("字符串或日期格式为空"); } Date date = null; try{ SimpleDateFormat parser = new SimpleDateFormat(pattern); date=parser.parse(strDate); }catch (ParseException e) { System.out.println("格式化失败" + e.getMessage()); } return date; }
2. 日期格式化为字符串
public String format(Date date, String pattern) { if(date==null){ return ""; } if (date == null || pattern == null || "".equals(pattern.trim())){ throw new IllegalArgumentException("日期或字符串格式为空"); } String str = null; try { SimpleDateFormat parser = new SimpleDateFormat(pattern); str = parser.format(date); } catch (Exception e) { System.out.println("不能转换" + e.getMessage()); } return str; }
3. 把一种格式的日期字符串格式化成另一种格式的日期字符串
public String format (String str, String oldP, String newP) { if (str == null || "".equals(str.trim()) || oldP == null || "".equals(oldP.trim()) || newP == null || "".equals(newP.trim())){ throw new IllegalArgumentException("不能为空"); } return format(parseDate(str,oldP),newP); }
-
Java格式化输出printf()详解
2020-09-14 14:11:05本文通过实例详细介绍Java格式化输出 System.out.printf() 方法的使用、参数的含义、格式转换符使用时的注意事项。概要: 本文通过实例详细介绍Java格式化输出 System.out.printf() 方法的使用、参数的含义、格式转换符使用时的注意事项。
文章目录
System.out.printf()
是 Java 5 开始引入的,用法类似 C语言的 printf() 函数, 但注意存在一定差异。1. printf API
// 使用指定的格式字符串和参数将格式化字符串写入入到输出流 public PrintStream printf(String format, Object ... args) // 基于本地化环境使用指定的格式字符串和参数将格式化字符串写入到输出流 public PrintStream printf(Locale l, String format, Object ... args)
以上2个方法,当 format 为 null 时,抛出 NPE.
2. 参数说明
1. format
format 是以百分号(%) 开头的格式说明字符串,具体格式如下
%[argument_index$][flags][width][.precision]conversion
-
可选的 argument_index 是十进制整数,表示参数列表中参数的位置。 第一个参数由“
1$
”引用,第二个由“2$
” 引用 ,等等。 argument_index 必须紧跟%
后面,并以$
结束。note: 参数索引值从1开始,而不是从0开始,
%1$
对第一个参数格式化。这就避免了与0标志混淆。 -
可选 flags 指定格式化输出外观的各种标志。 有效标志集取决于 conversion。
-
可选 width是正十进制整数,表示要写入到输出的字符个数(注意对于浮点数:也包含小数点所占的1个字和 负数的负号所占的1个字符)。 当实际字符数小于指定的宽度时,最前面用 flags 指定的标志填充(若未指定,默认用空格)。
eg: v=2.3,
%5.2f
输出5.20
,且前面包含1个空格。共打印5个字符,整数位1个5,1个小数点,2个精度,长度为4,比指定的宽度少1为,用1个前导空格代替。 -
可选 precision 是一个非负十进制整数,通常用于限制字符数。 具体行为取决于转换。
-
conversion (必需) 是一个字符,指示如何格式化参数。 给定参数的有效转换集取决于参数的数据类型。
表1-用于printf flags(标志) 说明
标志 目的 示例 + 打印正数和负数的符号 +3333.33 空格 在正数之前添加空格 | 3333.33| 0 数字前面补0 003333.33 - 左对齐(不指定-时,默认为右对齐) |3333.33 | ( 将负数括在括号内 %d,-90输出(90) ,(英文逗号) 添加分组分隔符,只对定点浮点数整数部分添加分组分隔符,小数部分不会添加 3,333.33 #(对于f格式) 包含小数点 3,333. #(对于x或o格式) 添加前缀0x或0 0xcafe $ 指定要格式化的参数索引。例如,%1 d d %1 dx 将以十进制和十六进制格式打印第1个参数 159 9F < <格式化前面说明的数值。例如, %d<%x
将以十进制和十六进制打印同一个值159 9F 表2-用于printf conversion(转换符) 说明
转换符 类型 示例 转换符 类型 示例 d 十进制整数 159 s 字符串 hello x 十六进制整数 9f c 字符 H o 八进制整数 237 b 布尔 true f 定点浮点数 1.59e+01 h 散列码 42628b2 e 指数浮点数 tx或Yx 日期时间(T强制大写) 已经过时,应当改为使用 java.time 类。 g 通用浮点数(e和f中较短的一个) —— % 百分号 % a 16进制浮点数 0x1.fccdp3 n 与平台有关的换行符 —— 补充1: 使用 s 转换符格式化任意的对象
可以使用 s 转换符格式化任意的对象。 对于实现了 Formattable 接口的任意对象,将调用这个对象的 formatTo 方法;否则调用 toString 方法将这个对象转换为字符串。
补充2: String.format()
使用
String.format()
方法可创建一个格式化的字符串,而不打印输出。API:public static String format(String format, Object... args) public static String format(Locale l, String format, Object... args)
参数和 printf() 中的含义相同。
表3-日期和时间的转换符
Note: 以下格式符已经过时,对于新的代码,应当使用 java.time 包的方法。
eg:
System.out.printf("%tc",new Date());
这条语句将用下面的格式打印当前的日期和时间:Mon Feb 09 18:05:19 PST 2015
下面的转换符前面都必须用 t/T 修饰。
转换符 类型 示例 c 完整的日期和时间 Mon Feb 09 18:05:19 PST 2015 F ISO 8601日期 2015/2/9 D 美国格式的日期(月/日/年) 02/09/2015 T 24小时时间 18:05:19 r 12小时时间 6:05:19 R 24小时时间,没有秒 18:05 Y 4位数字的年(前面补0 2015 y 年的后两位数字(前面补0) 15 C 年的前两位数字(前面补0) 20 B 月的完整拼写 February b或h 月的缩写 Feb m 两位数字的月(前面补0) 02 d 两位数字的日(前面补0) 09 e 两位数字的日(前面不补0 9 A 星期几的完整拼写 Monday a 星期几的缩写 Mon j 三位数的年中第几天(前面补0),在001到366之间 069 H 两位数字的小时(前面补0),在0到23之间 18 k 两位数字的小时(前面不补0),在0到23之间 18 I 两位数字的小时(前面补0),在01到12之间 06 l 两位数字的小时(前面不补0),在1到12之间 6 M 两位数字的分钟(前面补0) 05 S 两位数字的秒(前面补0) 19 L 三位数字的毫秒(前面补0) 047 N 九位数字的毫微秒(前面补0) 047000000 p 上午或下午的标志 pm z 从 GMT 起,RFC 822 数字位移 -800 Z 时区 PST s 从格林尼治时间 1970-01-01 00:00:00 起的秒数 1078884319 Q 从格林尼治时间 1970-01-01 00:00:00 起的毫秒数 1078884319047 从上表可以看到,某些格式只给出了指定日期的部分信息。例如,只有日期或月份。如果需要多次提供日期来分别格式化每一部分就太笨拙了。为此,可以用一个格式字符串指示要格式化的参数索引。索引必须紧跟在%后面,并以$终止。例如,
System.out.printf("%1$s %2$tB %2$te, %2$tY","Due date:",new Date());
会打印
Due date: February 9, 2015
还可以选择使用<标志。它指示前面格式说明中的参数将被再次使用。也就是说,以下语句将产生与前面语句同样的输出结果:
System.out.printf("%1$s %tB %<te, %<tY","Due date:",new Date());
2. args
args : 格式字符串中格式说明符引用的参数。如果参数多于格式说明符,则忽略额外参数。 参数的数量是可变的,可以为零。 参数的最大数量受The Java Virtual Machine Specification(java虚拟机规范)定义的Java数组的最大维数限制。 null参数上的行为取决于 conversion(转换符) 。
3. locale
数字和日期的格式化规则是特定于本地化环境的。 例如,在德国,分组分隔符是点号而不是逗号,另外 Monday被格式化为 Montag。locale主要用于如何控制应用的国际化行为。
3.printf 使用实例
// +199 199 c7 307 0xc7 0307 System.out.printf("%+d %<d %<x %<o %<#x %<#o\n",199); // | 23| |23| System.out.printf("|% d| |%<d|\n",23); // hello 第5个字符是o,that's true System.out.printf("%s 第%d个字符是%c,that's %b\n","hello",5,'o',true); // 15 % 6 = 3 System.out.printf("%2$d %% %1$d = %3$d\n",6,15, 15 % 6); // | 7.33| |007.33| |7.330000| 0x1.d51eb851eb852p2 System.out.printf("|%6.2f| |%0<6.2f| |%<f| %<a\n",7.33); // | 211.79| |211.79 | System.out.printf("|%7.2f| |%<-7.2f|\n",211.79); // | -211.79| |(211.79)| |(-211.79)| System.out.printf("|%8.2f| |%<(8.2f| |(%<.2f)|\n",-211.79); // |-21171.3333| |-21,171.3333| |-2.1171e+04| |-2.117e+04| System.out.printf("|%.4f| |%<,.4f| |%<.4e| |%<.4g|\n",-21171.3333); String str = new String("tree"); // Note: %h 格式符输出对象的散列码 和 调用对象的hashCode 得到的值并不相同 // obj %h formatinput: 36739e,hashCode:3568542 System.out.printf("obj %%h formatinput: %h,hashCode:%s\n",str,str.hashCode()); // true 25 0.0032 含 System.out.printf("%s %s %s %s\n",true,25,3.2e-3,'含'); System.out.printf("|%n| \n","world"); System.out.printf("|%n| \n");
输出
+199 199 c7 307 0xc7 0307 | 23| |23| hello 第5个字符是o,that's true 15 % 6 = 3 | 7.33| |007.33| |7.330000| 0x1.d51eb851eb852p2 | 211.79| |211.79 | | -211.79| |(211.79)| |(-211.79)| |-21171.3333| |-21,171.3333| |-2.1171e+04| |-2.117e+04| obj %h formatinput: 36739e,hashCode:3568542 true 25 0.0032 含 | | | |
关于 printf 转换符使用的注意事项
- 适用于浮点类型转换符(e,g,a,f)不能用于整形; 同样适用于整形的转换符(d,o,x)不能用于浮点型。
- 可以使用 s 转换符格式化任意的对象。 对于实现了 Formattable 接口的任意对象,将调用这个对象的 formatTo 方法;否则调用 toString 方法将这个对象转换为字符串。
eg:
// test in jdk 8,11,14 // Exception in thread "main" java.util.IllegalFormatConversionException: o != java.lang.Float System.out.printf("%o\n",2.3f); // Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Integer System.out.printf("%f\n",25);
(本文完) -
-
VS CODE中配置JAVA格式化细节
2021-03-11 13:52:44VS CODE版本:1.46由于VS CODE是使用“Language Support for Java(TM) by Red Hatredhat.java预览版”进行格式化的,所以需要在这个插件里设置格式。在“(用户名)\.vscode\extensions\redhat.java-0.62.0\formatters... -
java格式化日期的三种方式
2021-02-12 21:44:09具体的格式化说明请参看java.util.Formatter类的javadoc。 3)使用Calendar自己格式化 public static String toString(Date d) { Calendar c = Calendar.getInstance(); c.setTime(d); int year = c.get(Calendar.... -
java格式化输出方法
2021-03-05 23:12:57##Java中实现格式化输出的几种方式:1、System.out.printf();类似于c语言的printf方法。如:int x = 55;System.out.format(“x = %5x”, x);输出结果为:x = 372、System.out.format()int x = 55;System.out.printf... -
java 格式化输出时间日期
2019-09-28 15:17:03java中对于格式化输出日期时间提供了很好的工具类DateFormat和SimpleDateFormat。本文以SimpleDateFormat类为主,简单介绍格式化输出日期时间的操作,因为SimpleDateFormat类可以让用户自定义各种时间格式。 ... -
Java格式化字符串
2019-08-02 15:49:12String类的静态format()方法用于创建格式化的字符串。format()方法有两种重载形式。 (1)public static String format(String format, Object... args) 该方法使用指定的格式字符串和参数返回一个格式化字符串,... -
java格式化html代码
2019-03-26 09:26:21* 格式化html代码 * @param model * @param html * @return */ @RequestMapping("/formatHtml.dhtml") @ResponseBody public M formatHtml(Model model,String html) { if(StringUtils.isNotBlank... -
java格式化时间到毫秒
2019-05-30 11:47:45java格式化时间到毫秒: SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss:SSS"); 跟c#不同,c#用的是fff String formatStr =formatter.format(new Date(); 附录: java格式化字母表 ... -
Java格式化输出(表格样式)
2020-02-27 20:15:36所以写了一个输出类Fout,意为格式化输出。 项目地址 github 代码与输出截图 代码调用: 列项: 输出样式: 正文 一、调用方式 Fout的构造函数 可以构造一个含有多级子列项的表。(无奈, 真是很费脑) 1.... -
Java格式化日期的方法
2018-08-16 11:18:49SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 话不多说直接先上例子: 1.文本类型转为日期 ... -
Java格式化字串输出固定长度
2019-11-30 19:43:14Java格式化字串输出固定长度 -
Java 格式化xml字符串
2017-09-13 15:38:37Java 格式化xml字符串 -
Java格式化输入输出
2017-06-22 12:57:561. println() println()常常配合toString()函数使用,直接输出整个数组的时候,需要配合使用Arrays类 Arrays.toString(arrayName) 2. format() 格式化输出,非常像C中的printf ... * @file Java格式化输 -
Java格式化倒计时的两种方式
2017-07-31 21:33:11Java格式化倒计时的两种方式第一种方式/** * 入参是一个每秒减小1的秒数 * 返回一个格式化的时间 * * 该方法具有局限性,他在时间大于1个小时的时候,会返回错误的时间 * 因为该方法调用了Date类,初始值是... -
java格式化输出与字符串格式化输入
2018-11-15 17:56:04java格式化输出与字符串格式化输入 Java格式化输出 Java中可以使用System.out.print()将数值x输出到控制台上,在早期的java版本中,格式化输出数值曾经引发过争议,不过在javaSE5以后,引入了c语言中的格式化... -
Java格式化输出double类型
2018-11-29 16:49:08DecimalFormat df = new DecimalFormat("0.00"); System.out.println("The area of the pentagon is "+df.format(area)); -
java格式化输出百分比
2018-03-03 13:41:43说明 调用jdk的API输出百分比 代码 import java.text.NumberFormat;... * 使用API格式化输出百分比 */ public class PrintPercent { public static void print(double num1, double num2){ if(D... -
JAVA格式化当前日期或者取年月日
2019-03-28 09:53:00Date d = new Date(); System.out.println(d); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateNowStr = sdf.format(d...System.out.println("格式化后的日期:" + d... -
java格式化数字 NumberFormat及DecimalFormat
2019-05-06 17:34:22前言 以前用到要对数字格式的地方,都是直接到网上搜一下。拿过来能用就行。因为平时用的不多。...你会发现java对文字,数字的格式化,是有一个公共的父类的Format。 NumberFormat和DecimalFormat都是它... -
Java格式化json格式文本数据
2016-08-26 22:30:25假设,我有这样的一串json字符串数据: {"id":"1","name":"a1","obj":{"id":11,"name":"a11","array":[{"id":111,"name":"a111"},{"id":112,...我希望能格式化成下面的文本: { "id":"1", "name":"a1", "obj":{ -
java格式化带有英文的日期
2019-04-29 23:08:47我是最近在解析某个csv文件是,返现里面的日期字段全部是 数字-英文月份-数字年 例如:05-Mar-2019 ,而我入库存储date类型必须在java方法中对它进行转化,其实我们可以将它split之后,对Mar做个枚举类,来获取对应... -
Java格式化时间为yyyy-MM-dd HH:mm:ss
2020-06-18 19:19:01Java格式化时间 package com.sjsq.util; import java.text.SimpleDateFormat; import java.util.Date; /** * Java将时间转化为特定格式的字符串 * @author shuijianshiqing * @date 2020/6/18 18:55 */ public... -
java格式化格林威治时间
2017-04-25 17:15:22java格式化格林威治时间 第一步:首先将格林威治时间替换为“yyyy-MM-dd HH:mm:ss”格式 例如我们接口提供的格林威治时间格式为“2017-04-25T08:45:41Z” ,需要先转化为“2017-04-25 08:45:41” public static ... -
java 格式化时间
2017-09-15 13:28:09java 格式化时间