JAVA基础(1)
今天开始自己博客园的博客了,以前在新浪博客上有写过一些,但对比两者的体验,博客园的体验要比新浪高出不少。
这次主要是写format这个大类,他是由三个子类提供实现dateformat,numberformat,messageformat。以上的类都是抽象类,实现类提供工厂方法获取实例对象,(在本文最后简要说明一下工厂方法与实例方法)
dateformat类:
date date = new date(); 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 = new scanner(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 static person getinstance(){ return new person(); // 这里可以改为 return new player() / writer(),当改为writer()时要将方法返回类型改为writer。通过加载person类调用getinstance()创建person实例。 } } class player extends person{ } class writer extends person{ }
实例工厂方法:
就是先创建类对象,通过对象来调用创建实例对象的方法
public class helloworldfactory { public helloworld createhelloworld(){ return new helloworld(); } } helloworldfactory hellofactory = new helloworldfactory(); hellofactory.createhelloworld();
以上部分引用他人内容,感觉实例工厂方法与new 实例创建方法差不多。后查看资料才知道这两种方法在spring的bean的得到广泛使用,这要在以后再深入理解了。
工厂方法与实例方法部分援引自:https://blog.csdn.net/u012188107/article/details/54880415