Day10
一、Data方法类
java.util.Data--》对应数据库中的Data类中有大量的方法因为“千年虫”问题导致不建议使用。Data类中还推荐使用的方法,不推荐使用的方法被calendar给代替了。
1、getTime()
返回将data日期换为距离1970年间隔的毫秒
2、setTime
距离1970年的毫秒,转化成一个Data对象
二、23种设计模式-单例模式
java中单例模式是一种常见的设计模式,单例模式的写法有好几种,主要有三种:懒汉式单例,饿汉式单例,登记式单例
特点:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例
注释:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
A、懒汉式单例
懒汉式单例在第一次调用的时候实例化自己,Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。
package dayApi;
public class Singleton {
private Singleton() {}
private static Singleton single=null;
//静态工厂方法
public static Singleton getInstance() {
if(single==null) {
single=new Singleton();
}
return single;
}
}
B、饿汉式单例
饿汉式在类创建的同时就已经创建好了一个静态的对象供系统使用,以后不会在改变,所以天生是线程安全的,在类的初始化时,已经自动实例化。
class Singleton1{
private Singleton1() {}
private static final Singleton1 single=new Singleton1();
//静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}
C、登记式单例(可忽略)三、java中calendar类常用的方法。
a、获取时间
//使用默认时区和语言环境获得一个日历
Calendar cal=Calendar.getInstance();
public void test01() {
//使用默认时区和语言环境获得一个日历
Calendar cal=Calendar.getInstance();
//赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
System.out.println("年"+cal.get(Calendar.YEAR));
System.out.println("月"+cal.get(Calendar.MONTH));
System.out.println("日"+cal.get(Calendar.DAY_OF_MONTH));
System.out.println("时"+cal.get(Calendar.HOUR));
System.out.println("分"+cal.get(Calendar.MINUTE));
System.out.println("秒"+cal.get(Calendar.SECOND));
}
b、设置时间
月份的下标从0开始,设置时间同样需要注意,比如我们设置为2月15日除夕当晚的倒计时的最后一秒:2018-02-15 23:59:59如下:
//如果想设置某个时间日期,可以一次设置年月日时分秒,
//由于月份下标从0开始赋值月份要减1
//cal.set(year,month,data,hour,minute,second)
cal.set(2018, 1, 15, 23, 59,59);
System.out.println(cal.getTime());
c、时间计算
使用add加一秒,日期会自动进入下一天
cal.add(Calendar.SECOND, 1);
System.out.println(cal.getTime());
//Thu Feb 15 23:59:59 CST 2018
//Fri Feb 16 00:00:00 CST 2018
三、日期的格式化操作
我们对日期格式化操作,他默认提供了一些占位符,这些占位符都有特殊的含义
y:年 M:月 d:日 H:时 24小时 m:分 s:秒 E:星期