了解C语言的都知道,C语言的输出语句printf();可以对里面的内容格式化然后输出。那么在Java中也给我们提供了相关的方法。两者十分相似。注意Java中的格式化输出语句是
System.out.printf();

那么格式化的优点是什么,我认为最重要的一点就是方便,以及增加代码可读性。例如下面这两段代码:

package day_11_23;

/**
* @author soberw
*/
public class Exer {
public static void main(String[] args) {
String name = "张三";
char sex = '男';
int age = 18;
System.out.println("姓名:" + name + ",年龄:" + age + ",性别:" + sex + "。");
// 姓名:张三,年龄:18,性别:男。 System.out.printf("姓名:%s,年龄:%d,性别:%c。", name, age, sex);
// 姓名:张三,年龄:18,性别:男。
}
}

显然第二段更加美观,第一段频繁使用字符串拼接,如果数据过多,一会自己就迷了。还有就是我们在对一些特定数据进行操作时,格式化也给我们提供了很多便利。

格式化输出


其中日期转化的%tx中的x表示另外的处理日期和时间格式的转换符,它们的组合能够将日期和时间格式化成多种格式。包括如下

在Java中格式化需要用到转化符 % ,格式化以%符号开头,用相应的参数搭配替换内容。(%符号可根据\理解,要想输出%符号,格式需要写成这样%%

转换符

常用转换符

常用转换符实例说明:

package day_11_23;

/**
* @author soberw
*/
public class Printf {
public static void main(String[] args) {
//格式化输出实例
System.out.printf("我是%s,性别%c,今年%d岁%n", "张三", '男', 18);
//我是张三,性别男,今年18岁 //%n 换行类同 \n
//%s 格式化字符串
System.out.printf("我的名字是:%s\n", "张三");
//我的名字是:张三 //%d 格式化数字(十进制)
System.out.printf("张三今年%d岁%n", 18);
//张三今年18岁
//%o 格式化数字(八进制)
System.out.printf("%o%n", 63);
//77
//%x 格式化数字(十六进制)
System.out.printf("%x%n", 255);
//ff //%c 格式化字符型j (可用字符对应的ASCII码替换)
System.out.printf("%c%n", 97);
//a
System.out.printf("%c%n", 'a');
//a //%b 格式化布尔值
System.out.printf("%b%n", true);
//true //%f 格式化浮点型
//%.xf x为数字,表示要保留几位小数,如%.2f为保留两位小数(会四舍五入)
System.out.printf("%f%n", 1.555);
//1.555000
System.out.printf("%.2f",1.2555);
//1.26 }
}

日期转换

在格式化日期之前,我们必须要先获取到当前日期,或者手动设置一个日期。

package day_11_23;

import java.util.Calendar;
import java.util.Date; /**
* @author soberw
*/
public class PrintfDate {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
Date date = c.getTime(); //%tc 包括全部日期信息
System.out.printf("%tc%n", date);
//周二 11月 23 13:39:27 CST 2021 //%tF "年-月-日"格式
System.out.printf("%tF%n", date);
//2021-11-23 //%tD "月/日/年"格式
System.out.printf("%tD%n", date);
//11/23/21 //%tr "HH:MM:SS PM"格式(12小时制)
System.out.printf("%tr%n", date);
//01:43:04 下午 //%tT "HH:MM:SS"格式(24小时制)
System.out.printf("%tT%n", date);
//13:43:04 //%tR "HH:MM"格式 (24小时制)
System.out.printf("%tR%n", date);
//13:44 //%tH 小时(2位数字24小时制,不足补零)
System.out.printf("%tH%n", date);
//13 //%tI 小时(2位数字12小时制,不足补零)
System.out.printf("%tI%n", date);
//01 //%tk 小时(2位数字24小时制,不补零)
System.out.printf("%tk%n", date);
//13 //%tl 小时(2位数字12小时制,不补零)
System.out.printf("%tl%n", date);
//1 //%tM 分钟(2位数字分钟,不足补零)
System.out.printf("%tM%n", date);
//53 //%tS 秒(2位数字秒,不足补零)
System.out.printf("%tS%n", date);
//14 //%tL 毫秒(3位数字毫秒,不足补零)
System.out.printf("%tL%n", date);
//699 //%tN 毫秒(9位数字毫秒,不足补零)
System.out.printf("%tN%n", date);
//699000000 //%tp 上午或者下午
System.out.printf("%tp%n",date);
//下午 //%ts 1970-1-1 00:00:00到现在经过的秒数
System.out.printf("%ts%n",date);
//1637646987 //%tQ 1970-1-1 00:00:00到现在经过的毫秒数
System.out.printf("%tQ%n",date);
//1637646987635 //%tA 星期
System.out.printf("%tA%n",date);
//星期二
}
}

搭配标志

有了上面的演示,我们发现原来格式化输出如此好用。本来很难实现的效果比如格式化日期时间,现在只需要格式化一下就OK了,但是其实还可以更简单一下,比如下面的代码:

package day_11_23;

/**
* @author soberw
*/
public class PrintDateTime {
public static void main(String[] args) {
//举例输出:当前日期,格式为 "2021年11月23日 14:04:03 星期二"
long d = System.currentTimeMillis(); System.out.printf("%tY年%tm月%td日 %tT %tA ",d,d,d,d,d);
// 2021年11月23日 14:33:27 星期二
System.out.println();
System.out.printf("%1$tY年%1$tm月%1$td日 %1$tT %1$tA",d);
// 2021年11月23日 14:33:27 星期二
}
}

如果存在同一个数据同时格式化了好几次的情况,我们不必再重复去写好几遍,比如下面的写法。那么如何实现呢,Java给我们提供了相关的标志符,可以搭配转换符来使用:

代码演示:

package day_11_23;

/**
* @author soberw
*/
public class PrintfIdentifier {
public static void main(String[] args) {
//+ 为正数或者负数添加符号
System.out.printf("%+d,%+d\n",15,-3);
//+15,-3 //- 左对齐,后跟数字控制长度
System.out.printf("|%-5d|\n",123);
//|123 | //0 数字前面补零,后跟数字控制长度
System.out.printf("%02d\n",3);
//03
System.out.printf("%06.2f\n",1.2555);
//001.26 //空格 在整数之前添加指定数量的空格,后跟数字控制长度(空格也可省略)
System.out.printf("|% 5d|\n",99);
//| 99|
System.out.printf("|%5d|\n",99);
//| 99| //, 对数字分组,一般千位分组
System.out.printf("%,d\n",1000000);
//1,000,000
System.out.printf("%,.2f\n",1000000.00000);
//1,000,000.00 //( 用括号括住负数
System.out.printf("%(.2f\n",-33.333);
//(33.33) //# 如果是浮点数则包括小数点,如果是16进制或者8进制则添加0x或者0
System.out.printf("%#x\n",99);
System.out.printf("%#o\n",99);
System.out.printf("%#.2f\n",.233); //< 格式化前一个转换符所描述的参数,可以连写,可实现共用参数
System.out.printf("%f和%<3.2f和%<3.3f\n",99.45);
//99.450000和99.45和99.450 //$ 通过索引号获取参数,索引号从1开始,可实现共用参数(第一个可省略不写)
System.out.printf("%1$d,%1$d,%1$d\n",11);
//11,11,11
System.out.printf("%1$d,%2$d,%1$d\n",11,222);
//11,222,11
}
}

了解Java格式化输出printf,一篇就够了的更多相关文章

  1. 7.20.01 java格式化输出 printf 例子

    java格式化输出 printf 例子 importjava.util.Date; publicclassPrintf { publicstaticvoidmain(String[] args) { ...

  2. 【转】java格式化输出 printf 例子

    [转]java格式化输出 printf 例子 转自http://www.cnblogs.com/TankMa/archive/2011/08/20/2146913.html#undefined imp ...

  3. java格式化输出 printf 例子

    import java.util.Date; public class Printf { public static void main(String[] args) { // %s表示输出字符串,也 ...

  4. java 格式化输出 printf 总结

    double d = 345.678; String s = "hello!"; ; //"%"表示进行格式化输出,"%"之后的内容为格式的 ...

  5. Java面向对象 第2节 Scanner 类和格式化输出printf

    §Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 1.创建 Scanner 对象的基本语法:Scanner s = ...

  6. shell编程系列15--文本处理三剑客之awk格式化输出printf

    shell编程系列15--文本处理三剑客之awk格式化输出printf printf的格式说明符 格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o ...

  7. Java格式化输出

    Java的格式化输出等同于String.Format,与C有很大的相似,比如 System.out.printf("%8.2f", x);在printf中,可以使用多个参数,例如: ...

  8. java 格式化输出方法

    在javaSE5中推出了printf方法来输出文本到控制台,在java中现在有如下方法可以输出文本: 1.System.out.println(....) //输出并换行 2.System.out.f ...

  9. 8.Java格式化输出

    JAVA中字符串输出格式 1.使用format函数 System.out.format("%d  %f",10,10.5); 2.使用Formatter类 构造函数Formatte ...

随机推荐

  1. Hadoop 之 高可用不自动切换(ssh密钥无效 Caused by: com.jcraft.jsch.JSchException: invalid privatekey )

    案例 在安装hadoop ha之后,验证HDFS高可用时,怎么都不能实现自动切换.查看zkfc日志发现错误信息如下: WARN org.apache.hadoop.ha.SshFenceByTcpPo ...

  2. java POJO中 Integer 和 int 的不同,用int还是用Integer

    https://www.jianshu.com/p/ff535284916f [int和Integer的区别] int是java提供的8种原始类型之一,java为每个原始类型提供了封装类,Intege ...

  3. Git 的配置 config

    Git 的配置 config Git 的配置 config config 文件简述 config 文件位置 信息查询 修改 config 文件 编辑配置文件 增加指定配置项 删除指定配置项 自助餐   ...

  4. 灵雀云新一期DevOps认证培训圆满结束,下期学员招募同步开启

    近日,灵雀云最新一期EXIN DevOps认证培训在北京圆满结束,来自某知名运营商领域ISV的近40名学员以百分百的通过率为此次培训画上圆满的句号. 灵雀云是国内首家在DevOps培训领域与EXIN合 ...

  5. 谷歌性能测评工具lighthouse使用

    1.谷歌插件lighthouse的基本介绍 Lighthouse 是一个网站性能测评工具, 它是 Google Chrome 推出的一个开源自动化工具,能够对 PWA 和网页多方面的效果指标进行评测, ...

  6. 关于 Intel CPU 和Iris Xe Graphics的报告问题

    关于 Intel CPU 和Iris Xe Graphics的报告问题 有些用户报告了一些技术问题,这里有更多的信息和如何解决. Intel 11th CPU & Iris Xe Graphi ...

  7. Javascript面向对象——创建对象、构造函数的原型

    Javascript面向对象--创建对象.构造函数的原型 其实:JavaScript中的创建类,就是创建一个构造函数,在创建对象时用到new这个关键字, 一.创建对象 1.函数创建对象 functio ...

  8. 模拟axios的创建[ 实现调用axios()自身发送请求或调用属性的方法发送请求axios.request() ]

    1.axios 函数对象(可以作为函数使用去发送请求,也可以作为对象调用request方法发送请求) ❀ 一开始axios是一个函数,但是后续又给它添加上了一些属性[ 方法属性] ■ 举例子(axio ...

  9. Using Swap

    # create swap file dd if=/dev/zero of=/.swap bs=1048576 count=4096 # format swap mkswap /.swap # sta ...

  10. golang中结构体标签在json中的应用

    package main import ( "encoding/json" "fmt" "reflect" ) type Movie str ...