今天开始自己博客园的博客了,以前在新浪博客上有写过一些,但对比两者的体验,博客园的体验要比新浪高出不少。
这次主要是写Format这个大类,他是由三个子类提供实现DateFormat,NumberFormat,MessageFormat。以上的类都是抽象类,实现类提供工厂方法获取实例对象,(在本文最后简要说明一下工厂方法与实例方法)
DateFormat类:
Date date = newDate();
DateFormat datea=DateFormat.getDateInstance();
System.out.println(datea.format(date));//2019年2月2日
DateFormat dateb =DateFormat.getDateTimeInstance();
System.out.println(dateb.format(date));//2019年2月2日 上午11:26:22
DateFormat datec = DateFormat.getDateInstance(0, Locale.CHINA);
System.out.println(datec.format(date));//2019年2月2日星期六
DateFormat dated = DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.CANADA);//获取加拿大的格式化日期
System.out.println(dated.format(date));//Feb. 2, 2019
DateFormat datee =DateFormat.getTimeInstance();
System.out.println(datee.format(date));//上午11:26:22
DateFormat datef =DateFormat.getInstance();
System.out.println(datef.format(date));//2019/2/2 上午11:26
//如果上面找不到想要的格式,可以利用SimpleDateFormat类,其是DateFormat类的子类
SimpleDateFormat simpledate = new SimpleDateFormat("yy年MM月dd日 hh时mm分ss秒");
System.out.println(simpledate.format(date));
字母日期或时间元素示例
y
年
2015
M
年中的月份
12
w
年中的周数
50
W
月份中的周数
02
D
年中的天数
344
d
月份中的天数
10
F
月份中的星期
02
E
星期中的天数
星期四、Thu
a
AM/PM标记
下午、PM
H
一天中的小时数(0~23)
21
k
一天中的小时数(1~24)
21
K
am/pm中的小时数(0~11)
09
h
am/pm中的小时数(1~12)
09
m
小时中的分钟数
31
s
分钟中的秒数
08
S
毫秒数
716
NumberFormat类:
System.out.println("请输入一个数字:");
Scanner scan= newScanner(System.in);
System.out.println("该数字用Locale类的以下常量作为格式化对象的构造参数,将获得不同的货币格式:");//NumberFormat类实现数字格式化,这个类的一个抽象类,可以通过其静态方法getCurrencyInstance()获取其实例对象,本实例获取了货币的实例对象//NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CHINA);
double number =scan.nextDouble();//抽象类+静态方法获取实例对象
NumberFormat format =NumberFormat.getCurrencyInstance(Locale.CHINA);
System.out.println(format.format(number));//¥1,456.00
format=NumberFormat.getCurrencyInstance(Locale.JAPAN);
System.out.println(format.format(number));
format=NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(format.format(number));
System.out.println("请输入百分数");
double persent = scan.nextDouble();
double a = persent/100;
format = NumberFormat.getPercentInstance();//输出百分数的形式
System.out.println(format.format(a));
NumberFormat有两个具体实现子类DecimalFormat和ChoiceFormat
DecimalFormat同SimpleDateFormat类似,允许我们指定格式模式获取我们想要的格式化数值,DecimlFormat默认是3位小数,四拾伍入。
setMaximumFractionDigits(int newValue)方法,设置小数部分中允许的最大数字位数
setMinimumFractionDigits(int newValue)方法,设置小数部分中允许的最小数字位数,如果原数小数位数不够的话,会补零。
setGroupingSize(int i)方法,设置分组中一组的位数。
setGroupingUsed(boolean value)方法设置是否使用分组,true表示使用,false表示取消分组
setMaximumIntegerDigits(int newValue)方法设置整数部分允许的最大数字位数
setMinimumIntegerDigits(int newValue)方法设置整数部分允许的最小数字位数
实例化有3种方法 1、静态工厂方法 ,2构造器生成, 3、实例工厂方法
静态工厂方法:
顾名思义就是直接可以通过静态方法来实例化一个对象
如:
NumberFormat format = NumberFormat.getInstance();
(单例的写法多用静态工厂方法,好处1;方法有自己的名字,与new实例对比,当构造函数有多个,且参数相近时会容易混淆,这时静态工厂方法的优势就体现出来了。好处2:可以返回类型的子类
Class Person {public staticPerson getInstance(){return newPerson();//这里可以改为 return new Player() / Writer(),当改为Writer()时要将方法返回类型改为Writer。通过加载Person类调用getInstance()创建Person实例。
}
}
Class PlayerextendsPerson{
}
Class WriterextendsPerson{
}
实例工厂方法:
就是先创建类对象,通过对象来调用创建实例对象的方法
public classHelloWorldFactory {publicHelloWorld createHelloWorld(){return newHelloWorld();
}
}
HelloWorldFactory helloFactory= newHelloWorldFactory();
helloFactory.createHelloWorld();
以上部分引用他人内容,感觉实例工厂方法与new 实例创建方法差不多。后查看资料才知道这两种方法在spring的bean的得到广泛使用,这要在以后再深入理解了。
工厂方法与实例方法部分援引自:https://blog.csdn.net/u012188107/article/details/54880415