Calendar.getInstance()方法既然返回一个GregorianCalendar类型的对象,为啥出现以下问题:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Calendar.getInstance()方法既然返回一个GregorianCalendar类型的对象,为啥出现以下问题:相关的知识,希望对你有一定的参考价值。
GregorianCalendar c1 = Calendar.getInstance();//解释错误语句
Calendar c1 = Calendar.getInstance();//正确语句
GregorianCalendar c1 = Calendar.getInstance();返回的是一个Calendar,但你c1定义的又是GregorianCalendar ,所以会报错
可以写成
Calendar c1 = Calendar.getInstance();
或者
Calendar c1 =GregorianCalendar.getInstance();追问
返回的是GergorianCalendar的实例对象,可以向上转型,但GergorianCalendar c1为什么会出错。
参考技术A 很基础的问题,多翻下课本了GregorianCalendar 是Calendar 的子类, 你能说儿子一定是父亲么?追问
GregorianCalendar c1 = GregorianCalendar.getInstance(); 为什么也不对呢
追答GregorianCalendar.getInstance(); 调用的是父类getinstance方法,返回的是Calendar
Day027 Calendar类
Calendar日历类
- Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能。
- 获取Calendar实例的方法
- 使用Calendar.getInstance()方法(调用Calendar的静态方法)
- 调用它的子类GregorianCalendar的构造器。(实例化继承Calendar的子类)
Calendar calendar=Calendar.getInstance();//实际上还是new的GregorianCalendar
System.out.println(calendar.getClass());
输出结果
class java.util.GregorianCalendar
注:可以看到,用getInstance()方法最终还是new的GregorianCalendar对象。
-
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY、MINUTE、SECOND
- public void set(int field,int value)
- public void add(int field,int amount)
- public final Date getTime()
- public final void setTime(Date date)
-
注意:
- 获取月份时:一月是0,二月是1,以此类推,12月是11
- 获取星期时:周日是1,周二是2,。。。。周六是7
public static void main(String[] args) {
//1.实例化
Calendar calendar=Calendar.getInstance();//实际上还是new的GregorianCalendar
System.out.println(calendar.getClass());
//2.常用方法
//get()
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
//set()
calendar.set(Calendar.DAY_OF_MONTH,22);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//add()
calendar.add(Calendar.DAY_OF_MONTH,3);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
calendar.add(Calendar.DAY_OF_MONTH,-1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//getTime() 日历类--->Date对象
Date date = calendar.getTime();
System.out.println(date);
//setTime() Date对象--->日历类
Date date1 = new Date();
calendar.setTime(date1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
}
输出结果
class java.util.GregorianCalendar
27
147
22
25
24
Mon May 24 20:14:35 CST 2021
27
以上是关于Calendar.getInstance()方法既然返回一个GregorianCalendar类型的对象,为啥出现以下问题:的主要内容,如果未能解决你的问题,请参考以下文章
java笔记Calendar.getInstance()是什么意思
Calendar.getInstance()获取当天指定点上的时间
Calendar和Date之间的转换;system.nanotime()方法;以及System.currentTimeMillis()方法 分别计算运行效率