《2022年java学习笔记.docx》由会员分享,可在线阅读,更多相关《2022年java学习笔记.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -9.6 java.util包学习好资料欢迎下载java.util 包是 Java语言供应的工具类包,该包中包含了如日期、随机数和数据结构实现类等一系列的工具类实现,是学习Java语言的基础包之一;本部分就以 Java语言中常用的时间和日期处理、随机数处理以及集合框架为 基础进行介绍;9.6.1 时间和日期处理使用程序进行时间和日期处理,是程序员必需的一种常用技能,在不同的程 序设计语言中供应了不同的格式进行实现,现在就介绍一下 Java语言中的实现方式,以及基本的应用,使得对于 识;Java语言的时间和日期处
2、理技术有比较全面的认在程序中,某个固定的时间代表的都是一个时间点,也就是一个时间的瞬时,例如 2022 年 3 月 8 日 15 点 50 分 0 秒,在实际的应用中,常常需要对于两个时间进行比较或运算时间之间的差值,这些功能在Java语言中都可以很便利的实现;在 Java语言中,时间的表达单位是毫秒;也就是说,Java语言中的时间处理可以精确到毫秒;在 Java语言中,表达时间的方式有两种:a、肯定时间;以直观的形式来表达某个时间点,例如 2022 年 10 月 10 号0 点 0 分 0 秒;使用这种形式表达时间,使用起来比较直观,但是不便利进行时间之间的运算;例如无法很直观的运算2022
3、 年 1 月 1 号 0 点 0 分 0 秒和上面这个时间之间相差多少天;肯定时间以对象的形式进行表达,Java API中提 供了 java.util 包中的 Date 类和 Calendar类的对象进行表达;b、相对时间;以一个 long 型的数字表达某个时间点; 例如 102847423468;使用这种方式的优缺点和肯定时间刚好相反;这种方式很便利时间之间的计算,但是阅读起来很不直观;在 Java API中以需要表达的时间点,例如 2022 年 10 月 10 号 0 点 0 分 0 秒,和 GMT格林威治时间,也就是伦敦时间 1970 年 1 月 1 号 0 点 0 分 0 秒之间相差的
4、毫秒数作为相对时间的数值,假如该时间在这个时间只好,就相对时间为正数,否就相对时间为负数;Java API中供应 了 java.lang 包中的 System类的 currentTimeMillis 方法,获得以相对时间形式 描述的当前系统时间;在实际使用时,肯定时间和相对时间之间可以很便利的进行转换;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习好资料 欢迎下载9.6.1.1 Date 类在 JDK1.
5、0中,Date 类是唯独的一个代表时间的类,但是由于 Date 类不便于实现国际化,所以从 JDK1.1版本开头,举荐使用 Calendar类进行时间和日期处理;这里简洁介绍一下 Date 类的使用;1、使用 Date 类代表当前系统时间Date d = new Date;System.out.printlnd;使用 Date 类的默认构造方法创建出的对象就代表当前时间,由于 Date 类掩盖了 toString 方法,所以可以直接输出Date 类型的对象,显示的结果如下:Sun Mar 08 16:35:58 CST 2022 在该格式中,Sun代表 Sunday周日 ,Mar 代表 Mar
6、ch三月 ,08 代表 8 号,CST代表 China Standard Time中国标准时间,也就是北京时间 东八区 ;2、使用 Date 类代表指定的时间 Date d1 = new Date2022-1900,3-1,9; System.out.printlnd1;使用带参数的构造方法,可以构造指定日期的Date 类对象, Date 类中年份的参数应当是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值;例如上面的示例代码代表就是2022 年 3 月 9 号;实际代表详细的年月日时分秒的日期对象,和这个类似;3、获得 Date 对象中的信息 Date d2 = new Da
7、te; / 年份 int year = d2.getYear + 1900; / 月份 int month = d2.getMonth + 1; / 日期 int date = d2.getDate; / 小时 int hour = d2.getHours; / 分钟 int minute = d2.getMinutes; / 秒 int second = d2.getSeconds; / 星期几细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - -
8、- - - - - - - - -学习好资料 欢迎下载int day = d2.getDay; System.out.println年份: + year; System.out.println月份: + month; System.out.println日期: + date; System.out.println小时: + hour; System.out.println分钟: + minute; System.out.println秒: + second; System.out.println星期: + day; 使用 Date 类中对应的 get 方法,可以获得 Date 类对象中相关的信
9、息, 需 要留意的是使用 getYear获得是 Date 对象中年份减去 1900 以后的值,所以需要显示对应的年份就需要在返回值的基础上加上1900,月份类似;在 Date 类中仍供应了 getDay 方法,用于获得 Date 对象代表的时间是星期几, Date 类规 定周日是 0,周一是 1,周二是 2,后续的依次类推;4、Date 对象和相对时间之间的互转 Date d3 = new Date2022-1900,3-1,10; long time = 1290876532190L; / 将 Date 类的对象转换为相对时间 long t = d3.getTime; System.out.
10、printlnt; / 将相对时间转换为 Date 类的对象 Date d4 = new Datetime; System.out.printlnd4; 使用 Date 对象中的 getTime 方法,可以将 Date 类的对象转换为相对时间,使用 Date 类的构造方法,可以将相对时间转换为Date 类的对象;经过转换以后,既便利了时间的运算,也使时间显示比较直观了;9.6.1.2 Calendar 类 从 JDK1.1版本开头,在处理日期和时间时,系统举荐使用 Calendar 类进行实现;在设计上, Calendar类的功能要比 Date 类强大许多,而且在实现方式上也比Date 类要复
11、杂一些,下面就介绍一下Calendar类的使用;Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透亮的,只需要使用 1、使用 Calendar类代表当前时间getInstance 方法创建即可;Calendar c = Calendar.getInstance;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习好资料 欢迎下载由于 Calendar类是抽象类,且
12、Calendar类的构造方法是 protected 的,所 以无法使用 Calendar类的构造方法来创建对象, API中供应了 getInstance 方法 用来创建对象;使用该方法获得的 Calendar对象就代表当前的系统时间,由于 Calendar 类 toString 实现的没有 Date 类那么直观,所以直接输出 Calendar类的对象意 义不大;2、使用 Calendar类代表指定的时间 Calendar c1 = Calendar.getInstance; c1.set2022, 3 - 1, 9; 使用 Calendar类代表特定的时间, 需要第一创建一个 Calendar
13、的对象,然 后再设定该对象中的年月日参数来完成;set 方法的声明为:public final void setint year,int month,int date 以上示例代码设置的时间为 2022 年 3 月 9 日,其参数的结构和 Date 类不 一样; Calendar类中年份的数值直接书写,月份的值为实际的月份值减 1,日 期的值就是实际的日期值;假如只设定某个字段,例如日期的值,就可以使用如下 set 方法:public void setint field,int value在该方法中,参数field 代表要设置的字段的类型,常见类型如下:Calendar.YEAR年份 Cale
14、ndar.MONTH月份 Calendar.DATE日期 Calendar.DAY_OF_MONTH日期,和上面的字段完全相同 Calendar.HOUR12 小时制的小时数 Calendar.HOUR_OF_DAY24 小时制的小时数 Calendar.MINUTE分钟 Calendar.SECOND秒 Calendar.DAY_OF_WEEK星期几 后续的参数 value 代表,设置成的值;例如:c1.setCalendar.DATE,10;该代码的作用是将c1 对象代表的时间中日期设置为10 号,其它全部的数值会被重新运算,例如星期几以及对应的相对时间数值等;3、获得 Calendar类
15、中的信息 Calendar c2 = Calendar.getInstance; / 年份 int year = c2.getCalendar.YEAR;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习好资料 欢迎下载/ 月份 int month = c2.getCalendar.MONTH + 1; / 日期 int date = c2.getCalendar.DATE; / 小时 int hour =
16、c2.getCalendar.HOUR_OF_DAY; / 分钟 int minute = c2.getCalendar.MINUTE; / 秒 int second = c2.getCalendar.SECOND; / 星期几 int day = c2.getCalendar.DAY_OF_WEEK; System.out.println年份: + year; System.out.println月份: + month; System.out.println日期: + date; System.out.println小时: + hour; System.out.println分钟: + mi
17、nute; System.out.println秒: + second; System.out.println星期: + day; 使用 Calendar类中的 get 方法可以获得 Calendar对象中对应的信息, get 方法的声明如下:public int getint field 其中参数 field 代表需要获得的字段的值,字段说明和上面的 set 方法保持 一样;需要说明的是,获得的月份为实际的月份值减 1,获得的星期的值和 Date 类不一样;在 Calendar类中,周日是 1,周一是 2,周二是 3,依次类推;4、其它方法说明其实 Calendar类中仍供应了许多其它有用的
18、方法,见方法的使用;a、add 方法下面简洁的介绍几个常public abstract void addint field,int amount 该方法的作用是在 Calendar 对象中的某个字段上增加或削减肯定的数值,增加是 amount 的值为正,削减时amount 的值为负;例如在运算一下当前时间 100 天以后的日期,代码如下:Calendar c3 = Calendar.getInstance; c3.addCalendar.DATE, 100; int year1 = c3.getCalendar.YEAR;细心整理归纳 精选学习资料 - - - - - - - - - - -
19、- - - - 第 5 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习好资料 欢迎下载/ 月份 int month1 = c3.getCalendar.MONTH + 1; / 日期 int date1 = c3.getCalendar.DATE; System.out.printlnyear1 + 年 + month1 + 月 + date1 + 日; 这里 add 方法是指在 c3 对象的 Calendar.DATE,也就是日期字段上增 加 100,类内部会重新运算该日期对象中其它各字段的值,从
20、而获得 100 天以后的日期,例如程序的输出结果可能为:2022 年 6 月 17 日b、after 方法 public boolean afterObject when该方法的作用是判定当前日期对象是否在when 对象的后面,假如在when 对象的后面就返回 true ,否就返回 false;例如:Calendar c4 = Calendar.getInstance; c4.set2022, 10 - 1, 10; Calendar c5 = Calendar.getInstance; c5.set2022, 10 - 1, 10; boolean b = c5.afterc4; Syste
21、m.out.printlnb;在该示例代码中对象c4 代表的时间是 2022 年 10 月 10 号,对象 c5 代表的时间是 2022 年 10 月 10 号,就对象 c5 代表的日期在 c4 代表的日期之 后,所以 after 方法的返回值是 true ;另外一个类似的方法是 另外一个日期对象之前;c、getTime 方法before,该方法是判定当前日期对象是否位于public final Date getTime 该方法的作用是将 Calendar 类型的对象转换为对应的 Date 类对象,两者代表相同的时间点;类似的方法是 setTime,该方法的作用是将 Calendar对象,该方
22、法的声明如下:public final void setTimeDate date 转换的示例代码如下:Date d = new Date;Date 对象转换为对应的Calendar c6 = Calendar.getInstance; /Calendar 类型的对象转换为 Date 对象 Date d1 = c6.getTime;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习好资料 欢迎下载/Date
23、类型的对象转换为 Calendar对象 Calendar c7 = Calendar.getInstance; c7.setTimed; 5、Calendar对象和相对时间之间的互转 Calendar c8 = Calendar.getInstance; long t = 1252785271098L; / 将 Calendar对象转换为相对时间 long t1 = c8.getTimeInMillis; / 将相对时间转换为 Calendar对象 Calendar c9 = Calendar.getInstance; c9.setTimeInMillist1; 在转换时,使用 Calenda
24、r类中的 getTimeInMillis 方法可以将 Calendar 对象 转换为相对时间;在将相对时间转换为 Calendar对象时,第一创建一个 Calendar 对象,然后再使用 Calendar类的 setTimeInMillis 方法设置时间即可;9.6.1.3 应用示例下面以两个简洁的示例介绍时间和日期处理的基本使用;1、运算两个日期之间相差的天数 例如运算 2022 年 4 月 1 号和 2022 年 3 月 11 号之间相差的天数,就可以 使用时间和日期处理进行运算;该程序实现的原理为:第一代表两个特定的时间点,这里使用 Calendar的 对象进行代表, 然后将两个时间点转
25、换为对应的相对时间,求两个时间点相对 时间的差值,然后除以 1 天的毫秒数 24 小时 X60分钟 X60秒 X1000毫秒即可 获得对应的天数;实现该示例的完整代码如下:import java.util.*; /* * 运算两个日期之间相差的天数 */ public class DateExample1 public static void mainString args / 设置两个日期 / 日期: 2022 年 3 月 11 号 Calendar c1 = Calendar.getInstance; c1.set2022, 3 - 1, 11; / 日期: 2022 年 4 月 1 号细
26、心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习好资料 欢迎下载Calendar c2 = Calendar.getInstance; c2.set2022, 4 - 1, 1; / 转换为相对时间 long t1 = c1.getTimeInMillis; long t2 = c2.getTimeInMillis; / 运算天数 long days = t2 - t1/24 * 60 * 60 * 1000
27、; System.out.printlndays; 2、输出当前月的月历 该示例的功能是输出当前系统时间所在月的日历,例如当前系统时间是2022 年 3 月 10 日,就输出 2022 年 3 月的日历;该程序实现的原理为: 第一获得该月 1 号是星期几, 然后获得该月的天数,最终使用流程掌握实现依据日历的格式进行输出即可;即假如 1 号是星期一,就打印一个单位的空格,假如1 号是星期二,就打印两个单位的空格,依次类推;打印完星期六的日期以后,进行换行;实现该示例的完整代码如下:import java.util.*; /* * 输出当前月的日历 */ public class DateExam
28、ple2 public static void mainString args / 获得当前时间 Calendar c = Calendar.getInstance; / 设置代表的日期为 1 号 c.setCalendar.DATE,1; / 获得 1 号是星期几 int start = c.getCalendar.DAY_OF_WEEK; / 获得当前月的最大日期数 int maxDay = c.getActualMaximumCalendar.DATE; / 输出标题四星期五System.out.println星期日 星期一 星期二 星期三星期星期六 ;/ 输出开头的空格细心整理归纳 精
29、选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -学习好资料 欢迎下载forint i = 1;i start;i+ System.out.print ; / 输出该月中的全部日期 forint i = 1;i = maxDay;i+ / 输出日期数字 System.out.print + i; / 输出分隔空格 System.out.print ; ifi 10 System.out.print ; / 判定是否换行 ifstart + i - 1 % 7 = 0 System.out.println; / 换行 System.out.println; 关于时间和日期的处理就介绍这么多,更多的实现方法仍需要依据详细问题 进行对应的实现;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 9 页 - - - - - - - - -
限制150内