Java学习笔记(七)--格式化字符串及格式输出
一、格式化字符串
String 类的静态 format() 方法用于创建格式化的字符串。
1、format(String format, Object···args)
该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境(可用 Locale.getDefault() 方法查看本地语言环境)。
str1 = str.format(String format, Object···args);
- format:格式字符串。
- args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。
2、format(Local l, String format, Object···args)
str1 = str.format(Local l, String format, Object···args)
- l:格式化过程中要应用的语言环境。如果 l 为 null,则不进行本地化。
- format:格式化字符串。
- args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。
下面是一个例子演示图片:
1.1 日期和时间字符串格式化
format() 方法通过给定的特殊转换符作为参数来实现对日期和时间的格式化。
1.1.1 日期格式化
实例:在项目中创建类GetDate。
import java.util.Locale; //导入java.util.Locale类
import java.util.Date; //导入java.util.Date类public class GetDate {public static void main(String[] args) {Locale l = Locale.getDefault(); //获取本地默认语言环境System.out.println("默认语言环境" + l);Date date = new Date(); //创建Date对象date//指定语言环境格式化date String year = String.format("%tY", date);String month = String.format(Locale.US, "%tB", date);String day = String.format("%td", date);String week = String.format(Locale.US, "%tA", date);System.out.println("\n英文:");System.out.println(month + "\n" + week);//本地语言环境格式化String month1 = String.format("%tB", date);String week1 = String.format("%tA", date);System.out.println("\n本地语言:");System.out.println(year + "年" + month1 + day + "日" + week1);}
}
代码及运行结果图片:
1.1.2 时间格式化
format() 方法可实现Date对象时间的格式化。
1.1.3 格式化常见的日期时间组合
Date对象的格式化日期和时间转换符定义了各种日期和时间组合的格式。
1.2 常规类型格式化
常规类型的格式化可应用于任何参数类型。
String 类的静态方法 format() 用来创建可复用的格式化字符串,实现不同数据类型到字符串的转换。
二、格式化控制台输出
输出格式化数字可以使用 printf() 和 format() 方法。
使用 System.out.printf() 方法在控制台上显示格式化输出。
System.out.printf(format, item1, item2, ..., itemn);
这里的 format 是指一个由子串和格式说明符构成的字符串。格式说明符指定每个条目应该如何显示。这里的条目可以是数值、字符、布尔值或字符串。简单的格式说明符是以百分号 (%) 开头的转换码。
2.1 用于 printf 的转换符
转换符 | 类型 | 举例 |
---|---|---|
d | 十进制整数 | 159 |
x | 十六进制整数 | 9f |
o | 八进制整数 | 237 |
f | 定点浮点数 | 15.9 |
e | 指数浮点数 | 1.59e+01 |
g | 通用浮点数 | - |
a | 十六进制浮点数 | 0x1.fccdp3 |
s | 字符串 | Hello |
c | 字符 | H |
b | 布尔 | True |
h | 散列码 | 42628b2 |
tx | 日期时间 | x见下 |
% | 百分号 | % |
n | 与平台有关的行分隔符 | - |
2.2 用于 printf 的标志
标志 | 目的 | 举例 |
---|---|---|
+ | 打印正数和负数的符号 | +3333.33 |
空格 | 在正数之前添加空格 | | 3333.33| |
0 | 数字前面补0 | 003333.33 |
- | 左对齐 | |3333.33 | |
( | 将负数括在括号内 | (3333.33) |
, | 添加分组分隔符 | 3,333.33 |
#(对于f格式) | 包含小数点 | 3333.33 |
#(对于x或0格式) | 添加前缀0x或0 | 0xcafe |
$ | 给定被格式化的参数索引。如%1$d将以十进制打印第一个参数 | 159 9F |
< | 格式化前面说明的数值。如%d%<x以十进制和十六进制打印同一个数值 | 159 9F |
2.3 时间和日期的转换符
在这里,使用以 t 开始,格式为 tx,x代表的内容如下表:
转换符 | 类型 | 举例 |
---|---|---|
c | 完整的日期和时间 | 周日 4月 19 11:51:37 CST 2020 |
F | ISO 8601 日期 | 2020-04-19 |
D | 美国格式的日期(月/日/年) | 04/19/20 |
T | 24小时时间 | 11:56:27 |
r | 12小时时间 | 11:57:05 上午 |
R | 24小时时间没有秒 | 11:56 |
Y | 4位数字的年 | 2020 |
y | 年的后两位数字 | 20 |
C | 年的前两位数字 | 20 |
B | 月的完整拼写 | February |
b或h | 月的缩写 | Feb |
m | 两位数字的月 | 04 |
d | 两位数字的日(前面补0) | 09 |
e | 两位数字的日(前面不补0) | 9 |
A | 星期几的完整拼写 | Monday |
a | 星期几的缩写 | Mon |
j | 三位数的年中的日子(前面补0),在001到366之间 | 069 |
H | 两位数字的小时(前面补0),0到23之间 | 12 |
k | 两位数字的小时(前面不补0),0到23之间 | 12 |
I(i的大写) | 两位数字的小时(前面补0),0到12之间 | 06 |
l(L的小写) | 两位数字的小时(前面不补0),0到12之间 | 6 |
M | 两位数字的分钟(前面补0) | 05 |
S | 两位数字的秒(前面补0) | 19 |
L | 三位数字的毫秒(前面补0) | 047 |
N | 九位数字的毫微秒(前面补0) | 020000000 |
P | 上午或下午的大写标志 | PM |
p | 上午或下午的小写标志 | am |
z | 从GMT起,RFC822数字位移 | +0800 |
Z | 时区 | CST |
s | 从格林威治时间1970-01-01 00:00:00 起的秒数 | 1587270316 |
Q | 从格林威治时间1970-01-01 00:00:00 起的毫秒数 | 1587270331450 |
2.4 使用参数索引格式化输出日期
Date date = new Date();System.out.printf("%1$s %2$tB%2$te日, %2$tY","data:",date);
//输出结果为
data: 四月19日, 2020
索引必须紧跟在%后面,并以$终止。参数索引值从1开始,而不是从0开始。
同样还可以使用 < 标志。它指示前面格式说明中的参数将再次使用。
System.out.printf("%s %tB%<te日, %<tY","data:",date);
2.5 指定宽度和精度
举例 | 输出 |
---|---|
%5c | 输出字符并在这个字符条目前面加4个空格 |
%6b | 输出布尔值,在false值前加一个空格,在true值前加两个空格 |
%5d | 输出整个条目,宽度至少为5.如果该条目的数字位数小于5,就在数字前面加空格.如果该条目的位数大于5,则自动增加宽度 |
%10.2f | 输出的浮点条目宽度至少为10,包括小数点、和小数点后两位数字.这样,给小数点前分配了7位数字. 如果该条目小数点前的位数小于7,就在数字前面加空格. 如果该条目小数点前的位数大于7,则自动增加宽度. |
%10.2e | 输出的浮点条目的宽度至少为10,包括小数点、小数点后面两位数字和指数部分.如果按科学计数法显示的数字位数小于10,就给数字前加空格 |
%12s | 输出的字符串至少为12个字符.如果该字符串条目小于12个字符,就在该字符串前加空格.如果该字符串条目多余12个字符,则自动增加宽度 |
例子
public class PrintfDemo {public static void main(String[] args) {System.out.printf("%5.6f",12345678.12345678);System.out.println();System.out.printf("%8.4f",1.12);System.out.println();System.out.printf("%-8.4f",1.12);}
}
/*输出:
12345678.1234571.1200
1.1200
*/
Java学习笔记(七)--格式化字符串及格式输出相关推荐
- Java学习笔记:常用字符串方法和正则表达式
String类 -字符串并置 public class Main {public static void main(String[] args) {String a = "1";S ...
- Java学习笔记七——数组工具类Arrays
数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...
- java学习笔记(七)----异常
异常 class Test { public int devide(int x,int y) throws Exception //throws EXception 抛出异常,如果感觉到这个程序可能出 ...
- 【Java学习笔记七】常用数据对象之数组
同一般的对象创建和定义一样,数组的定义和创建可以分开进行也可以合并一起进行. 一维数组定义格式: <元素类型>[] <数组名>;//[]也可以放在数组名的后面 一维数组创建格式 ...
- java学习笔记七——继承
子类继承父类后子类就拥有父类的属性和方法 class a { } class b extends a { } b继承了a 转载于:https://www.cnblogs.com/huanghai/ar ...
- 【Java学习笔记】接收命令行参数输出指定个数的斐波那契数列
/*斐波那契数列使用命令行输入参数 */ public class Fibonacci {public static void main(String[] args){if (args.length ...
- Java学习笔记(十)--控制台输入输出
输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 2022年Java学习笔记目录
一.2022年Java任务驱动课程 任务驱动,统摄知识点:2022年Java程序设计讲课笔记 二.2022年Java学习笔记 (一)踏上Java开发之旅 Java学习笔记1.1.1 搭建Java开发环 ...
最新文章
- PVD与CVD性能比较
- 背完这444句,你的口语绝对不成问题了
- Winform中设置ZedGraph鼠标悬浮显示距离最近曲线上的点的坐标值和X轴与Y轴的标题
- 原创:pta做题笔记:注意数组大小大一点!//准考证号,试机座位,考试座位查询
- cnn输入层_多尺度CNN特征图的分析与应用
- java方法能不能继承方法_关于java:方法链接+继承不能很好地一起玩吗?
- MP 启动注入 SQL 原理分析
- restful api接口设计
- 2017-2018-1 20155204 《信息安全系统设计基础》第七周学习总结
- Grid++Report——打印功能
- UBUNTU启动到BusyBox,怎么办?
- 【IDEA】项目集成svn
- us news2017计算机科学,2017年USNews最新美国大学计算机专业研究生排名TOP120
- 案例分析企业微信带来的功能效果?
- c语言bzero函数头文件,嵌入q式c语言-文件操用.doc
- 【python】利用python实现简单粒子群优化算法实例
- VS+QT开发Ocx/ActiveX控件 一
- Matlab 泰勒图
- Vault: 基础教程之入门及使用介绍
- Task Host Window电脑关机提示怎么取消?
热门文章
- tensorflow 加载模型
- 青海省西宁市职称计算机考试试题,【青海西宁2017年第一批职称计算机考试时间4月8日起】- 环球网校...
- 深度学习核心技术精讲100篇(五十)-爱奇艺逗芽表情搜索分析与实践
- MATLAB实战系列(二十一)-基于遗传算法的BP神经网络优化算法(附MATLAB代码)
- MySQL如何向表中增加、修改字段
- java 正方形字符串_java编程:怎么画一个正方形?
- curl代理ippost php_php使用curl通过代理获取数据的实现方法
- Matplotlib实例教程(三)折线图 plt.plot()
- 【Linux】14_文件打包及压缩
- Pytorch中矩阵用sum()函数求和降维是怎么回事