欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA基础(1)

程序员文章站 2022-06-18 20:53:28
今天开始自己博客园的博客了,以前在新浪博客上有写过一些,但对比两者的体验,博客园的体验要比新浪高出不少。 这次主要是写Format这个大类,他是由三个子类提供实现DateFormat,NumberFormat,MessageFormat。以上的类都是抽象类,实现类提供工厂方法获取实例对象,(在本文最 ......

      今天开始自己博客园的博客了,以前在新浪博客上有写过一些,但对比两者的体验,博客园的体验要比新浪高出不少。

      这次主要是写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有两个具体实现子类decimalformatchoiceformat

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