Java的学习之路Day10

Java日期处理与单例模式
本文介绍Java中处理日期的常见方法,包括Data类的使用及限制,以及Calendar类的详细操作。此外,还深入探讨了单例模式的三种实现方式:懒汉式、饿汉式和登记式,并分析其特点。

                                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:星期








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值