JAVA & format
JAVA中format的使用(常用1,5)
format方法用于将对象格式化为指定模式的字符串
parseObject方法用于将字符串重新解析为对象
Format的直接子类包括DateFormat、NumberFormat和MessageFormat。下面一一进行介绍
1. java 中 SimpleDateFormat
下面展示一些 内联代码片
。
SimpleDateFormat format=new SimpleDateFormat("MM-dd HH:mm:ss E");
String time=format.format(new Date());
System.out.println("当前时间: "+time);
项目 | Value |
---|---|
G | 年代标志符 |
y | 年 |
M | 月 |
d | 日 |
H | 时 在一天中 (0~23) |
m | 分 |
s | 秒 |
S | 毫秒 |
E | 星期 |
D | 一年中的第几天 |
F | 一月中第几个星期几 |
w | 一年中第几个星期 |
W | 一月中第几个星期 |
a | 上午 / 下午 标记符 |
k | 时 在一天中 (1~24) |
K | 时 在上午或下午 (0~11) |
z | 时区 |
SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd");
String formdata = sdf.format(new Date());
//============================输出结果为--/2020/10/24
2. java 中 DateFormat(不怎么使用SimpleDateFormat 是)
DateFormat format = DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.CANADA);
//============================输出结果为加拿大时间--24-Oct-2020
3.JAVA 中 NumberFormat(转化为整数(四舍五入)-百分数-)
NumberFormat :根据当前语言环境格式化数字
1.getCurrencyInstance()方法 : 根据当前语言环境获取货币数值格式
NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CANADA);
System.out.println(format.format(439.6));
输出结果为: $439.60
2getInstance()和getNumberInstance()方法: 都会获取到常规数值格式
输出结果为: 439.6
3.getIntegerInstance()方法获取常规整数值格式,如果需要格式化的数值为小数,则会将数值四舍五入为最接近的整数
输出结果为: 440
4.getPercentInstance()方法获取百分比的数值格式
输出结果为: 43,960%
–NumberFormat有两个具体实现子类DecimalFormat和ChoiceFormat
符号 | 含义 |
---|---|
0 | 表示一个数字,被格式化数值不够的位数会补0 |
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
# | 表示一个数字,被格式化数值不够的位数会忽略 |
. | 小数点分隔符的占位符 |
, | 分组分隔符的占位符 |
- | 缺省负数前缀 |
% | 将数值乘以100并显示为百分数 |
\u2030 | 将数值乘以1000并显示为千分数 |
DecimalFormat format1 = new DecimalFormat("#\u2030");
System.out.println(format1.format(0.3345));//输出334‰
DecimalFormat format2 = new DecimalFormat("##.##");
System.out.println(format2.format(12.345));//输出12.35
DecimalFormat format3 = new DecimalFormat("0000.00");
System.out.println(format3.format(12.345));//输出0012.35
DecimalFormat format4 = new DecimalFormat("#.##%");
System.out.println(format4.format(12.345));//输出1234.5%
4.MessageFormat 占不介绍
5.String类中的format方法
可用标识符:
标识 | 含义 |
---|---|
- | 在最小宽度内左对齐,不可与0标识一起使用 |
0 | 若内容长度不足最小宽度,则在左边用0来填充 |
# | 对8进制和16进制,8进制前添加一个0,16进制前添加0x |
+ | 结果总包含一个+或-号 |
空格 | 正数前加空格,负数前加-号 |
, | 只用与十进制,每3位数字间用,分隔 |
( | 若结果为负数,则用括号括住,且不显示符号 |
可用转换符:
标识 | 含义 |
---|---|
b | 布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false |
n | 平台独立的换行符, 也可通过System.getProperty(“line.separator”)获取 |
f | 浮点数型(十进制)。显示9位有效数字,且会进行四舍五入。如99.99 |
a | 浮点数型(十六进制) |
e | 指数类型。如9.38e+5 |
g | 浮点数型(比%f,%a长度短些,显示6位有效数字,且会进行四舍五入) |
s | 字符串类型 |
c | 字符类型 |
String result1 = String.format("小明今年%d岁,他住在%s,他的月工资有%.2f", 25,"北京市",6633.435);
System.out.println(result1);//输出:小明今年25岁,他住在北京市,他的月工资有6633.44
/*****************************************************/
double num = 123.4567899;
String result2 = String.format("%e", num);
System.out.println(result2);//输出:1.234568e+02
Format中的子类都是不同步,所以需要注意线程安全问题