《Java-补充常用类库.ppt》由会员分享,可在线阅读,更多相关《Java-补充常用类库.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、补充补充:常用类库常用类库Company L主要内容学习目标及重、难点1任务学习2课堂实践3总结与要求4任务:掌握常用系统类的使用,熟悉其中的任务:掌握常用系统类的使用,熟悉其中的常用方法常用方法方法:多用、多实践方法:多用、多实践学习目标 重点、难点Company Logo学习目标掌握系统常用类的使用熟悉常用类的应用场合学习内容Object类System类数据包装类Math类Date类Random类Calender类任务学习任务介绍任务分析任务实现Company Logov任务描述任务描述任务一:系统常用类的使用任务学习任务介绍任务分析任务实现Company Logov支撑知识介绍支撑知识介
2、绍Object类System类Class类Math类基本数据类型包装类主要内容vJava核心核心API包包Java.lang包类Object,System类String,StringBuffer类Math,Class基本数据类型包装类java.util包类Arrays,ArraysList类Date,Calendar,Vector集合 Set,List,IteratorJava类库vJava的类库是的类库是系统提供系统提供的已实现的的已实现的标准类的集合标准类的集合,是,是Java编程的编程的API(Application Program Interface),),它可以帮助开发者方便、快捷地
3、开发它可以帮助开发者方便、快捷地开发Java程序。程序。v这些系统定义好的类根据实现的功能不同,可以划分成不这些系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合是一个包,合称为同的集合,每个集合是一个包,合称为类库类库。v Java的类库大部分是由它的发明者的类库大部分是由它的发明者SUN公司提供的,公司提供的,这些类库称为基础类库(这些类库称为基础类库(JFC)。)。vAPI 应用程序编程接口应用程序编程接口面向过程语言函数库(子程序包)面向对象语言类库Java类库结构v类库的结构类库的结构java.lang语言基础类库(System、Math、Thread、基本数据类型类)
4、java.utilJava的工具类库(集合容器集合容器、日期)java.ioJava的标准输入输出类库java.applet用于实现JavaApplet小程序的类库java.awt用于构建图形用户界面的类库java.awt.event界面用户交互控制和事件响应类库Java的用于实现网络功能的类库v使用使用JDK Document查看类库查看类库语言基础类库Object类vJava程序中所有程序中所有类的直接或间接父类,也是类库中类的直接或间接父类,也是类库中所有所有类的的父类类的的父类,所有的其他类都是从,所有的其他类都是从Object类类派生。派生。v构造方法:构造方法:Object()v一
5、般方法:一般方法:Objectclone()生成当前对象的一个拷贝。booleanequals(Objectobj)比较两个对象是否相等。inthashCode()返回该对象的哈希码值ClassgetClass()获取当前对象所属的类信息。StringtoString()用来返回当前对象本身的有关信息。protectedvoidfinalize()当垃圾收集器确定对象上没有其他的引用时,调用对象上的垃圾收集器。Object类上的此方法不执行任何特定行为,仅简单返回,其子类会覆盖此方法。toString()方法 vObject类定义有public String toString()方法,其返回值
6、是String类型,描述当前对象的有关信息v在进行String与其它类型数据的连接操作时(如:System.out.println(“info”+Person),将自动调用该对象类的toString()方法v可以根据需要在用户自定义类型中重写toString()方法equals()方法vObject类定义有public boolean equals(Object obj)方法,判断对象是否“相等”vObject的equals方法定义为:x.equals(y),当x和y是同一个对象的应用时返回true否则返回falsevJ2SDK提供的一些类,如String、Date等,重写了equals()方
7、法,当使用x.equals(y)时表示x和y所引用的对象是同一类对象且属性内容相等(并不一定是相同对象)返回true,否则返回falsev可以根据需要在用户自已定义的类中重写equals()方法equals()重写步骤v0.判断自身对象与obj是否“=”,若是,则返回true.(不是必须)v1.判断对象是否为空判断对象是否为空,若为空若为空,返回返回false,若不为空若不为空,到到2;v2.判断判断obj是否判断是否为子类对象或自身对象是否判断是否为子类对象或自身对象,若是若是,则到则到3,若不是若不是,则返回则返回false;v3.转换转换obj为为自身对象自身对象v4.比较关键属性比较关
8、键属性,若相等若相等,则返回则返回true,否则返回否则返回false.v注意注意:重写之后的重写之后的equals()方法应该满足其特征方法应该满足其特征语言基础类库System类vSystem类是一个特殊类,它是一个公共最终类,不能被类是一个特殊类,它是一个公共最终类,不能被继承,也不能被实例化,即继承,也不能被实例化,即不能创建不能创建System类的对象类的对象。vSystem提供了标准输入输出、运行时的系统信息等工具提供了标准输入输出、运行时的系统信息等工具,它所有的它所有的属性和方法都是静态属性和方法都是静态(static)的的,引用时应以,引用时应以System为前缀。为前缀。v
9、获取系统标准输入获取系统标准输入/输出输出/错误输出错误输出System.in(对应于键盘输入或用户指定输入源)System.out(对应于显示屏或用户指定的输出源)System.err(对应于显示屏或用户指定的输出源)System类相关方法v获取系统时间获取系统时间 longcurrentTimeMillis();获取自1970年1月1日零时至当前系统时刻的毫秒数v数组复制数组复制voidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)将一个任意类型的数组快速地从一个地方复制到另一个地方v强制关闭强制关闭Java虚拟
10、机虚拟机voidexit(intstatus);强制Java虚拟机退出运行状态,并把状态信息status返回给运行虚拟机的操作系统。status非0描述非正常中断.v垃圾回收器垃圾回收器voidgc();强制调用Java虚拟机的垃圾回收功能。JAVA中的字符串(复习)vJava把字符串把字符串(常量或变量常量或变量)作为包作为包java.lang中中String类和类和StringBuffer类的对象来分别处理字符串常量和字符串变量。类的对象来分别处理字符串常量和字符串变量。v由于使用频繁,有时也被视为基本类型由于使用频繁,有时也被视为基本类型遇到双引号自动创建String类的对象提供字符串运
11、算符,字符串的连接:+v定长字符串:定长字符串:String类(效率较高)类(效率较高)String类对象表示的是不可变的字符串,如果需要修改String对象所表示的内容,必须重新创建一个对象String str=Peter“;str=str+&Bob+&Tom;不能更改,可用于比较、搜索之类的操作当修改操作频繁,或字符串的值很大时,会额外分配大量内存v可变字符串:可变字符串:StringBuffer类类(使用灵活)使用灵活)StringBuffer类对象是可变的字符串,有改变字符串内容和长度的若干方法,并且,StringBuffer在多线程中使用是安全的。可追加、插入、修改,但内存管理复杂练
12、习v定义定义Student类,包括学号、姓名、身高、体重类,包括学号、姓名、身高、体重属性,重写其属性,重写其equals()方法,用来判断两个同方法,用来判断两个同学是否为同一个人,重写学是否为同一个人,重写toString()方法,输出方法,输出每个同学的相关信息。每个同学的相关信息。语言基础类库-Class类vClass类的实例代表一个正在运行的类的实例代表一个正在运行的Java应用程序的类或接口,数应用程序的类或接口,数组以及组以及Java的基本数据类型的基本数据类型(boolean,byte,char,short,int,long,float和和double)和关键字和关键字void
13、都是由都是由Class对象来表达对象来表达vClass类没有公共的构造器,类没有公共的构造器,用户无法自己生成用户无法自己生成Class类的对象类的对象,由,由JVM自动构造,自动构造,Object是是“万类之源万类之源”,Class是类的运行时表示,是类的运行时表示,可以把每个可以把每个Class类的对象当做众多类的代理类的对象当做众多类的代理 语言基础类库-Class类vJava运行时系统会对所有的对象进行类型识别运行时系统会对所有的对象进行类型识别vpublic final Class extends Objectv 一般方法:一般方法:StringgetName()返回类名。Field
14、getFields()返回类的public域对象。MethodgetMethods()返回类的public方法对象。PackagegetPackage()返回该类的包。vField 类类StringgetName()取域名vMethod 类类 StringgetName()取方法名vPackage 类类StringgetName()取包名语言基础类库:数据类型包装类v基本数据类型不是类,定义变量没有创建基本数据类型不是类,定义变量没有创建对象的过程,对象的过程,提高了性能提高了性能。v基本数据类型基本数据类型 vs.数据类型包装类数据类型包装类booleanvsBoolean,charvsCh
15、aracter,intvsInteger等v数据类型包装类数据类型包装类规定了数据类型的最大值MAX_VALUE、最小值MIN_VALUE构造函数:如newInteger(10);完成不同数据类型间转换,注意不同的数据类使用的方法会有不同。Double.toString(0.08)、Integer.parseInt(“123”)、Double.ValueOf(“0.08”).intValue()等,详细见JDKDoc自动包装和自动解包v包装包装:把基本数据类型(如:把基本数据类型(如int)转换成基础类型转换成基础类型封装类的对象(如封装类的对象(如new Integer()Integer a
16、=new Integer(3);/手工包装手工包装Integer a=3;/自动包装自动包装Java1.5之后之后v解包解包:把基础类型封装类的对象转换为基础数据:把基础类型封装类的对象转换为基础数据类型类型a.intValue/获取int形式的值a=a+3;/自动解包,a.intValue()+3 Wrapper(包装)类基本数据类型Wrapper类booleanCharactercharBooleanBytebyteShortshortIntegerintLonglongFloatfloatDoubledoubleInteger类v整数类中包含了对整形数据整数类中包含了对整形数据(int)
17、的各种常用操作的各种常用操作v属性属性 staticint MAX_VALUE返回int型数据的最大值staticint MIN_VALUE返回int型数据的最小值v构造方法构造方法vInteger a=new Integer();Integer(intvalue)Integer(Strings)v方法方法intintValue()doubledoubleValue()longlongValue()StringtoString()staticStringtoString(inti)staticintparseInt(Strings)staticintparseInt(Strings,intra
18、dix)throwsNumberFormatExceptionstaticIntegervalueOf(Strings)valueOf(inti)valueOf(Strings,intradix)staticintparseInt(Strings)Character类v在处理字符串时,用在处理字符串时,用Character类中的一些方法进行字类中的一些方法进行字符分类符分类v常用方法常用方法PublicstaticbooleanisDigit(charch)ch是否是数字字符PublicstaticbooleanisLetter(charch)ch是否是字母Publicstaticboolea
19、nisLetterorDigit(charch)ch是否是数字或字母PublicstaticbooleanisSpace(charch)ch是否是空格PublicstaticbooleantoLowerCase(charch)返回ch的小写形式类型转换利用类/对象方法v利用类方法(静态方法)利用类方法(静态方法)Integer.parseInt(“23”)Integer.parseInt(23,16)Integer.parseInt(110,2)Integer.parseInt(110,8)Integer.toString(23)Double.parseDouble(“12.3”)Double
20、.toString(12.3)v利用对象方法利用对象方法Doubled;Strings;/声明d=newDouble(12.3);/创建s=d.toString();Double.valueOf(“12.3”).doubleValue();/返回doubled1=3;Doubled2=4;=Doubled2=newDouble(4);语言基础类库:Math类vMath类用来完成常用的数学运算类用来完成常用的数学运算数学常量:E,PI数学运算:(一般运算都以double进行)Math.abs(-8.09);Math.exp(5.7);Math.random();Math.sqrt(9.08);M
21、ath.pow(2,3);/乘方Math.round(99.6);均为static,使用时无需创建实例Math.method(variable);数学运算的Math类abs(x)x的绝对值的绝对值sin(a)a的正弦的正弦cos(a)a的余弦的余弦tan(a)a的正切的正切asin(v)v的反正弦的反正弦,v的范围的范围-1.0,1.0acos(v)v的反余弦的反余弦,v的范围的范围-1.0,1.0atan(v)v的反正切的反正切,返回的范围返回的范围-/2,/2atan2(x,y)x/y的反正切的反正切,返回的范围返回的范围-,v属性属性publicfinalstaticdoubleE;/数
22、学常量epublicfinalstaticdoublePI;/圆周率常量v方法(均为静态方法方法(均为静态方法 public static)数学运算的Math类exp(x)expow(y,x)yxlog(x)x的自然对数的自然对数sqrt(x)x的平方根的平方根ceil(x)大于或等于大于或等于x的最小整数的最小整数floor(x)小于或等于小于或等于x的最小整数的最小整数rint(x)x取整取整,不舍入不舍入round(x)对对x四舍五入四舍五入,即即(int)floor(x+0.5)max(x,y)返回返回x,y的大者的大者min(x,y)返回返回x,y的小者的小者IEEEERemande
23、r(x,y)案案IEEE-754标准计算余数标准计算余数(取模取模)random()返回范围在返回范围在0.0r1.0的伪随机数的伪随机数r示例:Math类public class MathMethodpublic static void main(String args)System.out.println(Math.abs(-23.7)=+Math.abs(-23.7);System.out.println(Math.abs(-1059)=+Math.abs(-1059);System.out.println(Math.ceil(23.7)=+Math.ceil(23.7);System.
24、out.println(Math.floor(23.7)=+Math.floor(23.7);System.out.println(Math.exp(2)=+Math.exp(2);System.out.println(Math.log(Math.E)=+Math.log(Math.E);System.out.println(Math.pow(2,15)=+Math.pow(2,15);System.out.println(Math.sqrt(625)=+Math.sqrt(625);System.out.println(Math.max(6.25,10.35)=+Math.max(6.25,
25、10.35);System.out.println(Math.mix(6.25,10.35)=+Math.min(6.25,10.35);总结v父类Object,注意equals()、hashcode()、toString()方法v系统类System,了解获取系统信息的方法v数据包装器类了解xxxValue(),parseXxx(),valueOf()和toString()的方法要注意哪些是静态方法,哪些会跑出数据格式异常vMah类,要了解方法名vString和StringBuffer区别Company Logo实用工具类库java.utilvjava.util 包提供了一些实用的方法和数据结
26、构包提供了一些实用的方法和数据结构提供日期(Date)类、日历(Calendar)类来产生和获取日期及时间提供随机数(Random)类产生各种类型的随机数提供了堆栈(Stack)、向量(Vector)、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构java.util包Random类vRandom类允许创建多个类允许创建多个相互独立的随机数发生器相互独立的随机数发生器v任何任何Random对象都能产生对象都能产生int、long、float或或double类型的伪类型的伪随机数,这些随机数是由一种算法创建的,先种下一粒种子并由它生随机数,这些随机数是由一种算法创建
27、的,先种下一粒种子并由它生长出一系列的数字长出一系列的数字v用同一粒种子对该算法进行两次初始化将产生同样的随机数序列用同一粒种子对该算法进行两次初始化将产生同样的随机数序列v构造方法:构造方法:Random()和和Random(seed)v常用方法:常用方法:nextInt()返回一个int类型的随机数nextInt(intlimit)返回一个大于等于0小于limit的int型的伪随机数nextFloat()返回一个float类型伪随机数nextBytes(bytebytes)使用伪随机值填充数组bytessetSeed(longseed)重置随机数发生器java.util包Date类v日期类
28、中封装了有关日期和时间的信息,用户还可以通过调用相应的方日期类中封装了有关日期和时间的信息,用户还可以通过调用相应的方法来获取系统时间或设置日期和时间法来获取系统时间或设置日期和时间vDate类定义一个类定义一个精确到毫秒的瞬间时刻精确到毫秒的瞬间时刻,是从,是从1970年年1月月1日的日的00:00:00GMT开始计时的时刻值开始计时的时刻值v构造方法构造方法publicDate()publicDate(longdate)/date以毫秒为单位,从1970.1.10:0开始v参数说明参数说明year值:需设定的年份-1900month(0-11)date(1-31)hrs(0-23)min,
29、sec(0-59)java.util包-Date类vDate类的常用方法类的常用方法booleanafter(Datewhen)测试此日期是否在指定日期之前booleanbefore(Datewhen)测试此日期是否在指定日期之后booleanequals(Objectobj)比较两个日期是否是同一个日期intcompareTo(Dateanother)比较两个日期的大小,当前对象大于、等于或小于实参返回正整数、零或负整数stringtoString()将日期值转换为String:dowmonddhh:mm:sszzzyyyy形式vSimpleDateFormat类,指定日期的格式类,指定日期
30、的格式SimpleDateFormatsdf=newSimpleDateFormat(“yyyy年MM月dd日北京时间”);示例:Date类import java.util.Date;public class DateTestpublic static void main(String args)Date curDate=new Date();System.out.println(Current Date=+curDate);Date newDate=new Date(10000);System.out.println(New date=+newDate);System.out.println
31、(curDate.after(newDate);System.out.println(curDate.before(newDate);System.out.println(MS since 1970-1-1:+curDate.getTime();java.util包Calendar类vCalendar描述一个特定日期内的某一特定的时刻,描述一个特定日期内的某一特定的时刻,Calendar是抽象类,不能创建对象是抽象类,不能创建对象vCalendar的常用方法的常用方法getInstance()得到表示当前时间的实例Calendarcal=Calendar.getInstance();get(i
32、nt)获取相应信息,如get(Calendar.YEAR)set(int,int)如set(Calendar.YEAR,1999)set(year,month,date)set用来设置信息Calendar.getTime()得到当前时间的Date对象java.util包-GregorianCalendarvGregorianCalendar是是Calendar的子类,它实现了世界上普的子类,它实现了世界上普遍使用的公历系统遍使用的公历系统(阳历阳历),它就像是一本台历,只显示一个日期,它就像是一本台历,只显示一个日期,可以翻过几天、几个月或几年显示另一个日期可以翻过几天、几个月或几年显示另一个
33、日期vGregorianCalendar对象封装了时区信息及日期和时间数据对象封装了时区信息及日期和时间数据v构造方法构造方法(共七个)共七个)GregorianCalendar()GregorianCalendar(intyear,intmonth,intdate)GregorianCalendar(intyear,intmonth,intdate,inthour,intminute)GregorianCalendar(intyear,intmonth,intdate,inthour,intminute,intsecond)用给定的日期和时间创建一个GregorianCalendar对象v常
34、用方法,见常用方法,见API文档文档vTimeZone是是java.util包中的一个类,其中封装了有关包中的一个类,其中封装了有关时区的信息时区的信息。每个。每个时区对应一组时区对应一组ID,类类TimeZone提供方法完成时区与对应提供方法完成时区与对应ID两者之间的转两者之间的转换。换。java.util包-GregorianCalendarv设置日期和时间设置日期和时间可以用Date对象设置GregorianCalendarcalendar=newGregorianCalendar();calendar.setTime(Date);用显式的值为设置日期或时间Calendar.set(2
35、008,9,30);Calendar.set(intfield,intvalue);/对字段进行设置v获取日期和时间信息获取日期和时间信息使用使用get()方法并指定所需信息为实参,可获取日、月和年的信息,返回值是整数。方法并指定所需信息为实参,可获取日、月和年的信息,返回值是整数。int day=calendar.get(calendar.DAY_OF_WEEK);v修改日期和时间修改日期和时间使用add()方法可以修改日历中的当前实例calendar.add(calendar.YEAR,14);/在当前的年份上加在当前的年份上加14使用roll()方法可以对一个日历的某个字段增一或减一Ca
36、lendar.roll(calendar.MONTH,false);/月份减1 示例:Calendar,GregorianCalendarimport java.util.*;public class CalendarTestpublic static void main(String args)String arrW=日日,一一,二二,三三,四四,五五,六六;System.out.println(当前时间:当前时间:+Calendar.getInstance().getTime();Date d1=new GregorianCalendar(2005,8,1,1,1,00).getTime(
37、);Date d2=new Date();long diff=d2.getTime()-d1.getTime();System.out.println(d1+与与+d2+差距天数差距天数=+diff/(1000L*60*60*24);Calendar c=Calendar.getInstance();System.out.println(-当前时间当前时间-);System.out.println(年年:月月:日日+c.get(Calendar.YEAR)+:+(c.get(Calendar.MONTH)+1)+:+c.get(Calendar.DATE);System.out.println(时时:分分:秒秒+c.get(Calendar.HOUR)+:+c.get(Calendar.MINUTE)+:+c.get(Calendar.SECOND)+(c.get(Calendar.AM_PM)=1?PM:AM);System.out.println(星期星期+arrWc.get(Calendar.DAY_OF_WEEK)-1);练习v以下图格式输出以下图格式输出2011年年10月的日历页,月的日历页,
限制150内