西电Java口头报告.docx
- 文档编号:3867088
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:22KB
西电Java口头报告.docx
《西电Java口头报告.docx》由会员分享,可在线阅读,更多相关《西电Java口头报告.docx(21页珍藏版)》请在冰点文库上搜索。
西电Java口头报告
口头报告:
Calendar类
组员:
一、Calendar类的基本情况介绍:
Calendar类,顾名思义,也就是中文所述的“日历”类。
因此,从类名我们就可以知道这个类大概是干什么的。
我们猜测,通过这个类,可以得到当前的日期和时间,修改和设置日期和时间等等。
至于这个类的具体情况,可以见下面的具体分析。
Calendar类定义在java的java.util包中,故使用Calendar类时,需要在程序的开头添加“importjava.util.*;”或者“importjava.util.Calendar;”语句。
Calendar的声明如下:
publicabstractclassCalendar
extendsObject
implementsSerializable,Cloneable,Comparable
由Calendar类上述的声明可以看出,此类是一个抽象类,是Object类的子类,实现了Serializable,Cloneable,Comparable
此外,Calendar还有一个直接子类:
GregorionCalendar类。
二、Calendar类的字段介绍:
Calendar类的对象给我们提供了日期和时间的一些信息。
所以,一个Calendar对象中有许多字段,从0开始标序,每个字段提供不同的信息。
例如,一个Calendar对象的1号字段,提供的是“年份”的信息;2号字段,提供的是“月份”的信息。
至于有多少字段,以及每个字段代表什么样的意思,可以从测试程序中看出。
当我们知道了每个字段代表的具体信息后,我们就可以通过Calendar类提供的一些方法,通过这些方法对不同字段的操作,获得我们想要的日期和时间信息,以及修改某些字段实现对日期和时间的修改。
所有字段的详细介绍见附录。
三、Calendar类的构造方法:
Calendar类有两个构造方法:
(所有构造方法的详细介绍见附录)
protected
Calendar()
构造一个带有默认时区和语言环境的Calendar。
protected
Calendar(TimeZone zone,Locale aLocale)
构造一个带有指定时区和语言环境的Calendar。
如果使用上述两种构造方法构造对象的话,会出现问题,因为Calendar类是一个抽象类,我们必须实现Calendar类中所有的抽象方法才可以使用上述构造方法。
比如,Calendar的子类:
GregorionCalendar类。
但是,我们可以使用另一种方法来得到一个Calendar的对象。
Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象。
Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化。
getInstance方法有四种,是重载的。
四种方法分别为:
使用默认时区和语言环境获得一个日历; 使用默认时区和指定语言环境获得一个日历;使用指定时区和默认语言环境获得一个日历;使用指定时区和语言环境获得一个日历。
上述中时区和语言环境的概念,涉及到另外两个类:
TimeZone和Locale。
因此,在这里,我们只使用第一种getInstance方法,即方法中没有参数,使用默认时区和语言环境获得一个日历。
四、Calendar类的方法:
Calendar类中提供了许多方法来操作Calendar对象,下面简要的介绍一些常用的方法。
其中,一个很常用很重要的方法getInstance方法在上面已经介绍过了。
所有方法的详细介绍见附录。
1、DategetTime()方法:
返回一个表示此Calendar时间值的Date对象。
2、intget(intfield)方法:
返回给定日历字段的值。
3、voidset()方法:
此方法共有四种,是重载的。
第一种有两个参数:
set(intfield,intvalue),将给定的日历字段设置为给定值
第二种有三个参数:
set(int year,int month,int date),设置日历字段YEAR、MONTH和DAY_OF_MONTH的值
第二种有五个参数:
set(int year,int month,int date,int hourOfDay,int minute),设置日历字段YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY和MINUTE的值。
第二种有六个参数:
set(int year,int month,int date,int hourOfDay,int minute,int second),设置日历字段YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、MINUTE和SECOND的值。
4、voidadd(int field,int amount)方法:
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
规则如下:
(1)、调用后field字段的值减去调用前field字段的值等于amount,以字段field中发生的任何溢出为模。
溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,并将字段值调整回其范围内。
(2)、如果期望某一个更小的字段是不变的,但让它等于以前的值是不可能的,因为在字段field发生更改之后,或者在出现其他约束之后,比如时区偏移量发生更改,它的最大值和最小值也在发生更改,然后它的值被调整为尽量接近于所期望的值。
更小的字段表示一个更小的时间单元。
HOUR是一个比DAY_OF_MONTH小的字段。
对于不期望是不变字段的更小字段,无需进行任何调整。
日历系统会确定期望不变的那些字段。
5、voidroll(int field,int amount)方法:
向指定日历字段添加指定(有符号的)时间量,不更改更大的字段
6、voidclear()方法:
此方法共有两种,是重载的。
第一种是无参数的:
clear(),将此Calendar的所日历字段值和时间值设置成未定义。
第二种有一个参数:
clear(int field),将此Calendar的给定日历字段值和时间值设置成未定义。
7、booleanafter(Objectwhen)方法:
判断此Calendar表示的时间是否在指定Object表示的时间之后,返回判断结果。
8、booleanbefore(Objectwhen)方法:
判断此Calendar表示的时间是否在指定Object表示的时间之前,返回判断结果。
9、intcompareTo(Calendar anotherCalendar)方法:
比较两个Calendar对象表示的时间值。
10、Objectclone()方法:
创建并返回此对象的一个副本。
11、booleanequals(Objectobj)方法:
将此Calendar与指定Object比较。
12、inthashCode()方法:
返回该此日历的哈希码。
13、StringtoString()方法:
返回此日历的字符串表示形式。
五、测试程序:
自己编写了一个类TestCalendar,通过创建Calendar类的对象,用对象调用相关方法来测试Calendar类相关信息。
程序如下:
importjava.util.*;
publicclassTestCalendar{
publicstaticvoidmain(String[]args){
//字段信息
System.out.println("ERA="+Calendar.ERA);
System.out.println("YEAR="+Calendar.YEAR);//年
System.out.println("MONTH="+Calendar.MONTH);//月
System.out.println("WEEK_OF_YEAR="+Calendar.WEEK_OF_YEAR);//指示当前年中的星期数
System.out.println("WEEK_OF_MONTH="+Calendar.WEEK_OF_MONTH);//指示当前月中的星期数
System.out.println("DATE="+Calendar.DATE);//日
System.out.println("DAY_OF_MONTH="+Calendar.DAY_OF_MONTH);//指示一个月中的某天
System.out.println("DAY_OF_YEAR="+Calendar.DAY_OF_YEAR);//指示当前年中的天数
System.out.println("DAY_OF_WEEK="+Calendar.DAY_OF_WEEK);//指示一个星期中的某天
System.out.println("DAY_OF_WEEK_IN_MONTH="+Calendar.DAY_OF_WEEK_IN_MONTH);//指示当前月中的第几个星期
System.out.println("AM_PM="+Calendar.AM_PM);//指示HOUR是在中午之前还是在中午之后
System.out.println("HOUR="+Calendar.HOUR);//指示上午或下午的小时,用于12小时制时钟
System.out.println("HOUR_OF_DAY="+Calendar.HOUR_OF_DAY);//指示一天中的小时,用于24小时制时钟
System.out.println("MINUTE="+Calendar.MINUTE);//指示一小时中的分钟
System.out.println("SECOND="+Calendar.SECOND);//指示一分钟中的秒
System.out.println("MILLISECOND="+Calendar.MILLISECOND);//指示一秒中的毫秒
System.out.println("ZONE_OFFSET="+Calendar.ZONE_OFFSET);//以毫秒为单位指示距GMT的大致偏移量
System.out.println("DST_OFFSET="+Calendar.DST_OFFSET);//以毫秒为单位指示夏令时的偏移量
System.out.println("FIELD_COUNT="+Calendar.FIELD_COUNT);//可识别的不同字段的数量
System.out.println();
System.out.println("SUNDAY="+Calendar.SUNDAY);//DAY_OF_WEEK字段值
System.out.println("MONDAY="+Calendar.MONDAY);//DAY_OF_WEEK字段值
System.out.println("TUESDAY="+Calendar.TUESDAY);//DAY_OF_WEEK字段值
System.out.println("WEDNESDAY="+Calendar.WEDNESDAY);//DAY_OF_WEEK字段值
System.out.println("THURSDAY="+Calendar.THURSDAY);//DAY_OF_WEEK字段值
System.out.println("FRIDAY="+Calendar.FRIDAY);//DAY_OF_WEEK字段值
System.out.println("SATURDAY="+Calendar.SATURDAY);//DAY_OF_WEEK字段值
System.out.println();
System.out.println("JANUARY="+Calendar.JANUARY);//MONTH字段值
System.out.println("FEBRUARY="+Calendar.FEBRUARY);//MONTH字段值
System.out.println("MARCH="+Calendar.MARCH);//MONTH字段值
System.out.println("APRIL="+Calendar.APRIL);//MONTH字段值
System.out.println("MAY="+Calendar.MAY);//MONTH字段值
System.out.println("JUNE="+Calendar.JUNE);//MONTH字段值
System.out.println("JULY="+Calendar.JULY);//MONTH字段值
System.out.println("AUGUST="+Calendar.AUGUST);//MONTH字段值
System.out.println("SEPTEMBER="+Calendar.SEPTEMBER);//MONTH字段值
System.out.println("OCTOBER="+Calendar.OCTOBER);//MONTH字段值
System.out.println("NOVEMBER="+Calendar.NOVEMBER);//MONTH字段值
System.out.println("DECEMBER="+Calendar.DECEMBER);//MONTH字段值
System.out.println("UNDECIMBER="+Calendar.UNDECIMBER);//MONTH字段值
System.out.println();
System.out.println("AM="+Calendar.AM);//AM_PM字段值
System.out.println("PM="+Calendar.PM);//AM_PM字段值
System.out.println();
System.out.println("ALL_STYLES="+Calendar.ALL_STYLES);//指示所有风格名称的风格说明符
System.out.println("SHORT="+Calendar.SHORT);//指示短名称的风格说明符
System.out.println("LONG="+Calendar.LONG);//指示长名称的风格说明符
System.out.println();
Calendarc=Calendar.getInstance();
System.out.println(c);
System.out.println();
//getTime()方法的使用:
System.out.println(c.getTime());
Datedate=newDate();
System.out.println(date);
System.out.println();
//get()方法的使用:
System.out.println(c.get
(1)+""+c.get
(2)+""+c.get(5));//输出当前年月日
System.out.println();
//set()方法的使用:
c.set(12,11);//将分的字段改成11时
System.out.println(c.getTime());
c.set(2011,11,23);//2012年12月23日
System.out.println(c.getTime());
c.set(2011,11,24,12,4);//2011年12月24日12时4分
System.out.println(c.getTime());
c.set(2011,11,24,12,4,59);//2011年12月24日12时4分59秒
System.out.println(c.getTime());
System.out.println();
//add()方法的使用:
c.add(2,2);//将月份字段加2
System.out.println(c.getTime());
System.out.println();
//roll()方法的使用:
c.roll(2,12);//将月份字段加12
System.out.println(c.getTime());
System.out.println();
//clear()方法的使用:
c.clear
(1);//将年份设置为未定义
System.out.println(c.getTime());
c.clear();////将所有字段设置为未定义
System.out.println(c.getTime());
System.out.println();
//after()方法的使用:
Calendarca=Calendar.getInstance();
System.out.println(ca.getTime());
System.out.println(ca.after(c));
System.out.println();
//before()方法的使用:
System.out.println(ca.before(c));
System.out.println();
//compareTo()方法的使用:
Calendarcb=Calendar.getInstance();
System.out.println(cb.getTime());
System.out.println(pareTo(cb));
System.out.println();
//clone()方法的使用:
Objecto=ca.clone();
System.out.println(ca);
System.out.println(o);
System.out.println();
//equals()方法的使用:
System.out.println(ca.equals(o));
System.out.println();
//hashCode()方法的使用:
System.out.println(ca.hashCode());
System.out.println();
//toString()方法的使用:
System.out.println(ca.toString());
System.out.println();
}
}
六、附录:
1、字段的详细介绍:
字段摘要
static int
ALL_STYLES
指示所有风格名称的getDisplayNames的风格说明符,比如"January"和"Jan"。
static int
AM
指示从午夜到中午之前这段时间的AM_PM字段值。
static int
AM_PM
get和set的字段数字,指示HOUR是在中午之前还是在中午之后。
static int
APRIL
指示在格里高利历和罗马儒略历中一年中第四个月的MONTH字段值。
protected boolean
areFieldsSet
如果fields[]与当前的设置时间同步,则返回true。
static int
AUGUST
指示在格里高利历和罗马儒略历中一年中第八个月的MONTH字段值。
static int
DATE
get和set的字段数字,指示一个月中的某天。
static int
DAY_OF_MONTH
get和set的字段数字,指示一个月中的某天。
static int
DAY_OF_WEEK
get和set的字段数字,指示一个星期中的某天。
static int
DAY_OF_WEEK_IN_MONTH
get和set的字段数字,指示当前月中的第几个星期。
static int
DAY_OF_YEAR
get和set的字段数字,指示当前年中的天数。
static int
DECEMBER
指示在格里高利历和罗马儒略历中一年中第十二个月的MONTH字段值。
static int
DST_OFFSET
get和set的字段数字,以毫秒为单位指示夏令时的偏移量。
static int
ERA
指示年代的get和set的字段数字,比如罗马儒略历中的AD或BC。
static int
FEBRUARY
指示在格里高利历和罗马儒略历中一年中第二个月的MONTH字段值。
static int
FIELD_COUNT
get和set可识别的不同字段的数量。
protected int[]
fields
此日历当前设置时间的日历字段值。
static int
FRIDAY
指示Friday的DAY_OF_WEEK字段值。
static int
HOUR
get和set的字段数字,指示上午或下午的小时。
static int
HOUR_OF_DAY
get和set的字段数字,指示一天中的小时。
protected boolean[]
isSet
通知是否设置了该日历某一指定日历字段的标志。
protected boolean
isTimeSet
如果time值是一个有效值,则返回true。
static int
JANUARY
指示在格里高利历和罗马儒略历中一年中第一个月的MONTH字段值。
static int
JULY
指示在格里高利历和罗马儒略历中一年中第七个月的MONTH字段值。
static int
JUNE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 口头 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)