服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java.util包简介 如何开发应用之二


  java的实用工具类库java.util包。在这个包中,java提供了一些实用的方法和数据结构。例如,java提供日期(data)类、日历(calendar)类来产生和获取日期及时间,提供随机数(random)类产生各种类型的随机数,还提供了堆栈(stack)、向量(vector) 、位集合(bitset)以及哈希表(hashtable)等类来表示相应的数据结构。图1给出了java.util包的基本层次结构图。下面我们将具体介绍其中几个重要的类。
  
java.util包简介 如何开发应用之二


  
图1.1 java.util包的基本层次结构

  
  1.2 日期类date
  
  java在日期类中封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统时间或设置日期和时间。date类中有很多方法在jdk1.0公布后已经过时了,在8.3中我们将介绍jdk1.0中新加的用于替代date的功能的其它类。
  
  在日期类中共定义了六种构造函数。
  
  (1)public date()
  
  创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间。例:
  
  date today=new date();
  //today被设置成创建时刻相对应的日期时间。
  
  (2)public date (long date)
  
  long 型的参数date可以通过调用date类中的static方法parse(string s)来获得。例:
  
  long l=date.parse("mon 6 jan 1997 13:3:00");
  date day=new date(l);
  //day中时间为1997年 1月6号星期一,13:3:00
  
  (3)public date(string s)
  
  按字符串s产生一日期对象。s的格式与方法parse中字符串参数的模式相同。例:
  
  date day=new date("mon 6 jan 1997 13:3:00");
  //day 中时间为1997年1月6号星期一,
  13:3:00
  
  (4)public date(int year,int month,int date)
  
  (5)public date(int year,int month,int date,int hrs,int min)
  
  (6)public date(int year,int month,int date,int hrs,int min,int sec)
  
  按给定的参数创建一日期对象。
  
  参数说明:
  
  year的值为:需设定的年份-1900。例如需设定的年份是1997则year的值应为97,即1997-1900的结果。所以date中可设定的年份最小为1900;
  
  month的值域为0~11,0代表1月,11表代表12月;
  
  date的值域在1~31之间;
  
  hrs的值域在0~23之间。从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;
  
  min和sec的值域在0~59之间。
  
  例:
  
  date day=new date(11,3,4);
  //day中的时间为:04-apr-11 12:00:00 am
  
  另外,还可以给出不正确的参数。例 设定时间为1910年2月30日,它将被解释成3月2日。
  
  date day=new date(10,1,30,10,12,34);
  system.out.println("day's date is:"+day);
  //打印结果为:day's date is:
  web mar 02 10:13:34 gmt+08:00 1910
  
  下面我们给出一些date类中常用方法。
  
  (1)
  
  public static long utc(int year,
  int month,int date,int hrs.
  int min,int sec)
  
  该方法将利用给定参数计算utc值。utc是一种计时体制,与gmt(格林威治时间)的计时体系略有差别。utc计时体系是基于原子时钟的,而gtmt计时体系是基于天文学观测的。计算中使用的一般为gmt计时体系。
  
  (2)public static long parse(string s)
  
  该方法将字符串s转换成一个long型的日期。在介绍构造方法date(long date)时曾使用过这个方法。
  
  字符串s有一定的格式,一般为:
  
  (星期 日 年 时间gmt+时区)
  
  若不注明时区,则为本地时区。
  
  (3)public void setmonth(int month)
  
  (4)public int getmonth()
  
  这两个方法分别为设定和获取月份值。
  
  获取的月份的值域为0~11,0代表1月,11代表12月。
  
  (5)public string tostring()
  
  (6)public string tolocalstring()
  
  (7)public string togmtstring()
  
  将给定日期对象转换成不同格式的字符串。它们对应的具体的格式可参看例子8.1。
  
  (8)public int gettimezoneoffset()
  
  该方法用于获取日期对象的时区偏移量。
  
  例8.1中对上面介绍的date类中的基本方法进行了具体的应用,并打印了相应的结果。由于使用了一些过时的方法,所以编译时会有警告信息。另外,由于本例中的时间表示与平台有关,不同的jdk版本对此处理不完全相同,因此不同版本的jdk执行本例的结果可能有细微差异。
  
  例1.1 dateapp.java
  
  import java.lang.system;
  import java.util.date;
  public class dateapp
  {
  public static void main(string args[])
  {
  date today=new date();
  //today中的日期被设成创建时刻的日期和时间,
  假设创建时刻为1997年3月
  //23日17时51分54秒。
  system.out.println("today's date is "+today);
  //返回一般的时间表示法,
  本例中结果为
  //today's date is fri may 23 17:51:54 1997
  system.out.println("today's
  date(internet gmt)is:"
  +today.togmtstring());
  //返回结果为gmt时间表示法,
  本例中结果为
  //today's date(internet gmt)is:
  23 may 1997 09:51:54:gmt
  system.out.println("today's
  date(locale) is:"
  +today.tolocalestring());
  //返回结果为本地习惯的时间表示法,
  结果为
  //today's date(locale)is:
  05/23/97 17:51:54
  system.out.println("today's year is:
  "+today.getyear());
  system.out.println("today's month is:
  "+(today.getmonth()+1));
  system.out.println("today's date is:
  "+today.getdate());
  //调用date类中方法,获取年月日的值。
  //下面调用了不同的构造方法来创建date类的对象。
  date day1=new date(100,1,23,10,12,34);
  system.out.println
  ("day1's date is: "+day1);
  date day2=new date
  ("sat 12 aug 1996 13:3:00");
  system.out.println
  ("day2's date is: "+day2);
  long l= date.parse
  ("sat 5 aug 1996 13:3:00 gmt+0800");
  date day3= new date(l);
  system.out.println
  ("day3's date(gmt)is:
  "+day3.togmtstring());
  system.out.println
  ("day3's date(locale)is: "
  +day3.tolocalestring());
  system.out.println
  ("day3's time zone offset is:"
  +day3.gettimezoneoffset());
  }
  }
  
  运行结果(jdk1.3版):
  
  e:/java/tutorial/java01>java dateapp
  today's date is thu dec 27 17:58:16 cst 2001
  today's date(internet gmt)is:27 dec 2001 09:58:16 gmt
  today's date(locale) is:2001-12-27 17:58:16
  today's year is: 101
  today's month is: 12
  today's date is: 27
  day1's date is: wed feb 23 10:12:34 cst 2000
  day2's date is: fri aug 12 13:03:00 cst 1996
  day3's date(gmt)is: 5 aug 1996 05:03:00 gmt
  day3's date(locale)is: 1996-8-5 13:03:00
  day3's time zone offset is:-480
  e:/java/tutorial/java01>
  
  1.3 日历类calendar
  
  在早期的jdk版本中,日期(date)类附有两大功能:(1)允许用年、月、日、时、分、秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析。在jdk1.1中提供了类calendar来完成第一种功能,类dateformat来完成第二项功能。
  
  dateformat是java.text包中的一个类。与date类有所不同的是,dateformat类接受用各种语言和不同习惯表示的日期字符串。本节将介绍java.util包中的类calendar及其它新增加的相关的类。
  
  类calendar是一个抽象类,它完成日期(date)类和普通日期表示法(即用一组整型域如year,month,day,hour表示日期)之间的转换。
  
  由于所使用的规则不同,不同的日历系统对同一个日期的解释有所不同。在jdk1.1中提供了calendar类一个子类gregoriancalendar??它实现了世界上普遍使用的公历系统。当然用户也可以通过继承calendar类,并增加所需规则,以实现不同的日历系统。
  
  第gregoriancalendar继承了calendar类。本节将在介绍类gregoriancalendar的同时顺带介绍calendar类中的相关方法。
  
  类gregoriancalendar提供了七种构造函数:
  
  (1)public gregoriancalendar()
  
  创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间。
  
  (2)public gregoriancalendar(timezone zone)
  
  创建的对象中的相关值被设置成指定时区zone,缺省地点的当前时间。
  
  (3)public gregoriancalendar(locale alocale)
  
  创建的对象中的相关值被设置成缺省时区,指定地点alocale的当前时间。
  
  (4)public gregoriancalendar(timezone zone,local alocale)

扫描关注微信公众号