Java语言程序设计教程第11章常用工具包和类ppt课件_第1页
Java语言程序设计教程第11章常用工具包和类ppt课件_第2页
Java语言程序设计教程第11章常用工具包和类ppt课件_第3页
Java语言程序设计教程第11章常用工具包和类ppt课件_第4页
Java语言程序设计教程第11章常用工具包和类ppt课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Return第第11章章 常用工具包和类常用工具包和类11.1 Java11.1 Java常用工具包常用工具包11.2 11.2 简单类型包装器简单类型包装器11.3 Object11.3 Object类类11.4 Class11.4 Class类类11.5 Package11.5 Package类类 11.6 Runtime11.6 Runtime类类 11.7 System11.7 System类类11.8 Math11.8 Math类类 本章将引见Java言语中的常用工具包和类。这些工具包和类在编程过程中经常用到,有些甚至是必不可少的,如java.lang包、System类等。熟练掌握本

2、章所引见的系统工具包和系统类,将为进一步学习Java编程打下良好的根底。 Return11.1 Java11.1 Java常用工具包常用工具包 在Java中,系统提供了大量的包以满足面向对象、网络化、编程的需求。本节将对一些常用的工具包作简要引见。 11.1.1 Java API 包11.1.2 java.lang 11.1.1 Java API 包 在Java 1.0被发布时,它包括一系列的8个包,被称作中心运用编程接口API。其中许多包在前面的章节中我们已引见过,而且编程时经常用到。如今,每当发布一个Java新版本时,都会添加一些中心API,当然还有其他一些有用的工具包。在J2SE 1.2

3、版本中,60个包总共提供了1781个公共类和接口;在J2SE 1.3版本中,70多个包提供的公共类和接口超越2100个;在J2SE 1.4版本中,120多个包提供了总数超越2600个的公共类和接口。 以下是一些经常用到的工具包: l 言语包java.lang提供的支持包括字符串处置、多线程处置、例外处置、数学函数处置等,可以用它简单地实现Java程序的运转平台; l 输入输出包java.io运用一致的“流模型来实现一切格式的IO,包括文件系统、网络传输、输入/出设备等; l 适用程序包java.util提供的支持包括哈希表、堆栈以及时间和日期等; l 笼统窗口工具集包java.awt实现了不同

4、平台上的计算机图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得Java可以移植到不同的运转环境; l 网络包java支持Internet的TCPIP协议,提供了与Internet的接口。它支持URL衔接,WWW的即时访问,并且简化了C/S客户/效力器模型的程序设计。 另外比较常见的Java包还有:java.math、java.sql、java.text、java.rmi、java.beans以及java.security等。教材P268页中的表11-1,列出了一切被Java 2定义的Java中心API包并对它们作了简要描画。Return11.1.2 java.lang 其实,我们前面章

5、节编写的每个Java程序都与java.lang有关。但之所以没阐明,是由于java.lang被自动导入一切的程序。它所包含的类和接口对一切Java程序都是必要的,是Java中最广泛运用的包。 教材P269页给出了java.lang中主要包括的类。 另外,还有两个由Character定义的类:Character.Subset和Character.UnicodeBlock,它们是在Java 2中新添加的。 java.lang中也定义了如下的接口: l Cloneable接口 l Comparable接口 l Runnable接口 其中,Comparable接口是在Java 2中新添加的。 java

6、.lang中的几个类包含了过时的方法,其中的大多数可以追溯到Java 1.0。在Java2中依然提供了这些方法,用于支持逐渐减少的老程序,而这些方法在新程序中不被引荐运用。大多数过时的方法出如今Java 2之前,因此我们不预备讨论这些方法。ReturnReturn11.2 简单类型包装器简单类型包装器11.2.1 Number 11.2.2 DoubleFloat 11.2.3 Byte、Short、Integer和和 Long11.2.4 Character 11.2.5 Boolean类类11.2.6 关于关于Vector11.2.7 Void和和Process 在教材2.3节中我们提到过

7、,Java运用简单的类型,如整型int、字符char等数据类型不是对象层次构造的组成部分,它们经过值传送给方法而不能直接经过援用传送。而且也没有方法使两种方法对整型int援用同一实例same instance。但是,有时需求对这些简单的类型建立对象表达式,如处置对象的枚举类,要将简单类型存储到这些类中的一个,需求在类中包装简单类型。为了满足这种需求,Java提供了与每一个简单类型相对应的类。从本质上讲,这些类在类中包装简单类型,因此通常被称作类型包装器wrappers。Return11.2.1 Number 笼统类Number定义了一个由包装数字类型字节型Byte、短整型Short、整型Int

8、、长整型Long、浮点型Float和双精度型Double的类实现的超类。Number有前往上面不同数字格式的对象值的笼统方法。也就是,doubleValue()方法前往双精度Double值,floatValue()方法前往浮点Float值等。这些方法如下:byte byteValue()double doubleValue()float floatValue()int intValue()long longValue()short shortValue()Number有6个详细的子类包含了6种数字类型的显式值:双精度型Double、浮点型Float、字节型Byte、短整型Short、整型Int

9、eger和长整型Long。11.2.2 DoubleFloat 双精度Double和浮点Float分别是对类型double和类型float的浮点值的包装器。浮点Float构造函数如下所示: Float(double num) Float(float num) Float(Stringstr)throw NumberFormatException 如上可见,浮点Float对象可以由类型float或类型double的值创建。它们也能由浮点数的字符串表达式创建。 双精度Double的构造函数如下。 Double(double num) Double(String str) throw NumberF

10、ormatException 双精度Double对象可以被双精度Double值或包含了浮点值的字符串创建。浮点Float和双精度Double都定义了一些常数,这些常数见教材P270页。 由浮点Float定义的方法见教材P271页表11-2。由双精度Double定义的方法见教材P271页表11-3。Return11.2.3 Byte11.2.3 Byte、ShortShort、IntegerInteger和和 LongLong Byte、Short、Integer和Long类分别是字节型byte、短整型short、整型int和长整型long整数类型的包装器。它们的构造函数分别如下: Byte(b

11、yte num) Byte(String str) throw NumberFormatException Short(short num) Short(String str) throw NumberFormatException Integer(int num) Integer(String str) throw NumberFormatException Long(long num) Long(String str) throw NumberFormatException 正如上所示,这些对象可由数值或含有有效整数值的字符串创建。 下面讨论如何进展数字和字符串的转换问题。在程序设计中,一

12、个最常见的问题是将一个数字的字符串表达式转换成内部的二进制格式。Java为此提供了一个方便的方法去完成这项义务。Byte、Short、Integer和Long类分别提供了parseByte()、parseShort()、parseInt()和parseLong()方法。这些方法前往与调用它们的数值字符串相应的字节byte、短整型short、整型int和长整型long值。在Float和Double类中也有类似的方法。教材P274页的程序阐明了parseInt()方法的运用。Return11.2.4 Character 字符Character是围绕字符型char的一个简单的包装器。字符Charac

13、ter的构造函数如下: Character(char ch) 这里,ch指定了被创建的字符Character对象所包装的字符。 调用如下的charValue()方法可以获得包含在字符Character对象中的字符型char值。 char charValue() 调用的结果前往字符。字符Character类定义的常数见教材P275页。 字符Character包括了几个静态方法,这些方法将字符分类并改动其大小写。这些方法见教材P275276页表11-4。关于这些方法的运用见教材P276页的例如。Return11.2.5 Boolean11.2.5 Boolean类类 Boolean是一个围绕布尔b

14、oolean值的非常细小的包装器,主要用在经过援用传送布尔boolean变量的场所。它包含了常数TRUE和FALSE,这些常数定义了布尔Boolean对象的真与假。Boolean也定义了TYPE域,它是boolean的Class对象。在Boolean中定义了如下的构造函数: Boolean(boolean boolValue) Boolean(String boolString) 在第一种方式中,boolValue要么是true,要么是false。在第二种方式中,假设在boolString中包含了字符串“true无论是大写方式还是小写方式,那么新的布尔Boolean对象将为真,否那么为假。Bo

15、olean定义了教材P277页表11-5中所列出的方法。Return11.2.6 关于关于Vector 向量Vector是由java.util包提供的,它允许提供不同类型元素共存的变长数组。Vector类的特点如下。 l 需求处置的对象数目不定,序列中的元素都是对象,或者可以表示成对象。 l 需求将不同类的对象组合成一个数据序列。 l 需求做频繁的对象序列中元素的插入和删除。 l 经常需求定位序列中的对象或其他查找操作。 l 在不同的类之间传送大量的数据。其局限性是对象不能是简单类型,但这可以经过数组Array实现。1创建向量类的对象: public Vector(int initCapaci

16、ty, int capacityIncrement);其中,initCapacity表示刚创建时Vector序列包含的元素数目,capacityIncrement表示假设向Vector序列中加元素,一次性加多少个。2向向量序列中加元素: addElement(Object obj) insertElement(Object obj, int index)3修正和删除向量序列中元素: setElementAt(Object obj, int index) removeElement(Object obj) removeElementAt(int index) removeAllElements(

17、)4查找向量序列中元素: elementAt(int index) contains(Object obj) lastIndexOf(Object obj, int start_index)ReturnReturn11.2.7 Void和和Process Void类有一个TYPE域,该域保管对类型void的Class对象的援用。这样做将不创建类的实例。 笼统类Process封装了一个进程process,也就是一个正在执行的程序。它主要被当作由Runtime类中的exec()方法所创建的对象的类型的超类。Runtime类将在后面引见。在笼统类Process中,包含了教材P278页表11-6中所列

18、出的笼统方法。Return11.3 Object类类11.3.1 Object 11.3.2 运用clone()和Cloneable接口 这里大致引见一下Object类。在Java中,定义有一种特殊的类Object,其他一切的类都是Object的子类。也就是说,Object是一切其他类的超类。这意味着一个Object类型的援用变量可以援用其他任何一个类的对象。同样,由于数组像类一样执行,Object类型变量可以援用任何数组。Return11.3.1 Object Object定义了教材P279页表11-7的方法,意味着它们可以被用于任何对象。这些类方法对于每一个对象都是可援用的。 其中,get

19、Class()、notify()、notifyAll()和wait()方法被定义成final。他可以重载除这些方法以外的其他方法。 留意这两个方法:equals()和toString()。 equals()方法比较两个对象的内容。假设对象是相等的,它前往true,否那么前往false。 toString()方法前往一个包含调用它的对象描画的字符串。而且,该方法在对象运用println()输出时自动调用。很多类都重载该方法,这样做使它们生成它们创建对象类型的一个特殊描画。11.3.2 11.3.2 运用运用clone()clone()和和CloneableCloneable接口接口 由Objec

20、t类定义的绝大部分方法在本书其他部分讨论。而一个特别值得关注的方法是clone()。clone()方法创建调用它的对象的一个复制副本。只需那些实现Cloneable接口的类能被复制。 Cloneable接口没有定义成员。它通常用于指明被创建的一个允许对对象进展位复制也就是对象副本的类。假设试图用一个不支持Cloneable接口的类调用clone( )方法,将引发一个CloneNotSupportedException异常。当一个副本被创建时,并没有调用被复制对象的构造函数。副本仅仅是原对象的一个简单准确的拷贝。 复制是一个具有潜在危险的操作,由于它能够引起不是他所期望的副作用。例如,假设被复制

21、的对象包含了一个称为obRef的援用变量,当副本创建时,副本中的obRef好像原对象中的obRef一样援用一样的对象。假设副本改动了被obRef援用的对象的内容,那么对应的原对象也将被改动。这里是另一个例子。假设一个对象翻开一个I/O流并被复制,两个对象将可操作一样的流。而且,假设其中一个对象封锁了流,而另一个对象仍试图对I/O流进展写操作的话,将导致错误。 由于复制能够引起问题,因此在Object内,clone( )方法被阐明为protected。这就意味着它必需或者被由实现Cloneable的类所定义的方法调用,或者必需被那些类显式重载以便它是公共的。分析教材P280281页的例子。Ret

22、urn11.4 Class类类 Class封装对象或接口运转时的形状。当类被加载时,类型Class的对象被自动创建。不能显式阐明一个类Class对象。普通地,经过调用由Object定义的getClass( )方法来获得一个类Class对象。由Class定义的一些最常用的方法见教材P282页表11-8所示。 由Class定义的方法经常用在需求知道对象的运转时类型信息的场所。如上表中所阐明的那样,由Class提供的方法确定关于特定的类的附加信息。例如它的公共构造函数,域以及方法。教材P283页的程序阐明了getClass()从Object承继的和getSuperclass()方法从Class承继的

23、。阐明:关于阐明:关于ClassLoader的问题:笼统类的问题:笼统类ClassLoader规定了类是如规定了类是如何加载的。运用程序可以创建扩展何加载的。运用程序可以创建扩展ClassLoader的子类,实现它的方的子类,实现它的方法。这样做允许运用不同于通常由法。这样做允许运用不同于通常由Java运转时系统加载的另一些方法运转时系统加载的另一些方法来加载类。由来加载类。由ClassLoader定义的一些方法见教材定义的一些方法见教材P283页表页表11-9。Return11.5 Package类 在Java 2中,添加了一个称为Package的类,这个类封装了与包有关的版本数据。关于包版

24、本信息,由于包的增值以及由于Java程序能够需求知道哪些包版本可以利用,而变得更加重要。Package中定义的方法见教材P284页表11-10所列。 教材P284页的程序经过显示程序当前知的包而阐明了Package的用法。Return11.6 Runtime类 11.6.1 内存管理11.6.2 执行其他的程序Return Runtime类封装了运转时环境。普通情况下,不实例化一个Runtime对象,但是可以经过调用静态方法Runtime.getRuntime()而获得对当前Runtime对象的援用。一旦获得了对当前对象的援用,就可以调用几个控制Java虚拟机的形状和行为的方法。小运用程序Ap

25、plets和其他不可信任的编码由于没引起一个平安异常SecurityException,故不能调用任何的Runtime方法。教材P285页表11-11给出了由Runtime定义的方法。Java 2中不建议运用方法runFinalizersOnExit(),这种方法是在Java 1.1中添加的,由于它如今被以为是一种不稳定的方法。 下面让我们来看一看Runtime类的两个最普遍的用法:内存管理和执行附加进程。11.6.1 内存管理 虽然Java提供了自动渣滓回收,有时也想知道对象堆的大小以及它还剩下多少。可以利用这些信息检验他的代码的效率,或估计对某些类型,有多少对象可以被实例化。为了获得这些值

26、,可以运用totalMemory()和freeMemory()方法。 正如我们在前面章节提及的,Java的渣滓回收器周期性地运转将不再运用的对象放入回收站。然而,有时想在搜集器的下一个指定循环之前搜集被丢弃的对象。假设这样可经过调用gc()方法按照要求运转渣滓回收器。一个比较好的战略是调用gc()方法,然后再调用freeMemory()方法以获得内存运用的底线。接着执行他的程序,并再一次调用freeMemory()方法看分配了多少内存。教材P286页的例子阐明了这个思想。Return11.6.2 执行其他的程序 在可靠的环境中,可以在他的多义务操作系统中运用Java去执行其他特别繁重的进程也即

27、程序。exec()方法的几种方式允许命名想运转的程序以及它们的输入参数。exec()方法前往一个Process对象,这个对象可以被用来控制他的Java程序如何与这个正在运转的新进程相互作用。由于Java可以运转在多种平台和多种操作系统的情况下,exec()方法本质上是依赖于环境的。教材P287页的第一个例子运用exec()方法装入Window的简单文本编辑器NotePad。显而易见,这个例子必需在Windows操作系统下运转。 exec()方法有几个方式可用,而在本例子中展现的是最常用的一种。在新程序开场运转之后,由exec()方法前往的Process对象可以被Process方法运用。可以运用

28、destroy()方法杀死子进程。waitFor()方法暂停程序直至子进程终了。当子进程终了后,exitValue()方法前往子进程前往的值。假设没有问题发生,它通常前往0。教材P287页的第二个例子是前面关于exec()方法例子的改良版本。例子被修正为等待直至正在运转的进程退出。ReturnReturn11.7 System类类11.7.1 运用currentTimeMillis()方法11.7.2 运用arraycopy()方法11.7.3 环境属性 System类保管静态方法和变量的集合。规范的输入,输出和Java运转时错误输出存储在变量in,out和err中。由System类定义的方法

29、见教材P288页表11-12中所示。 留意,当所做操作为平安方式所不允许时,许多方法引发一个平安异常SecurityException。同样,Java 2不赞成运用runFinalizersOnExit( )方法。该方法是在Java 1.1中添加的,同时也被证明是不可靠的。下面让我们看一看System类的一些用法。11.7.1 11.7.1 运用运用currentTimeMillis()currentTimeMillis()方法方法 可以发现System类的一个特别有意义的用法是:利用currentTimeMillis( )方法来记录程序的不同部分的执行时间。currentTimeMillis

30、( )方法前往自从1970年1月1号午夜起到如今的时间,时间单位是毫秒。假设要记录程序中一段有问题程序的运转时间可以在这段程序开场之前存储当前时间,在该段程序终了之际再次调用currentTimeMillis( )方法。执行该段程序所破费的时间为其终了时辰的时间值减去其开场时辰的时间值。教材P289页的程序阐明了这一点。Return11.7.2 11.7.2 运用运用arraycopy()arraycopy()方法方法 运用arraycopy()方法可以将一个恣意类型的数组快速地从一个地方复制到另一个地方。这比运用Java普通语句编写的循环算法要快得多。教材P290页是一个用arraycopy

31、()方法复制两个数组的例子。首先,将数组a复制给数组b;接下来,数组a中的一切元素向后移一位,然后数组b中元素向前移一位。Return11.7.3 11.7.3 环境属性环境属性教材P290页的属性在Java 2的一切环境中可以运用。可以经过调用System.getProperty()方法来获得不同环境变量的值。例如,下面的程序可显示当前用户目录的途径。class ShowUserDir public static void main(String args) System.out.println(System.getProperty(user.dir); ReturnReturn11.8 M

32、ath11.8 Math类类11.8.1 超越函数超越函数11.8.2 指数函数指数函数11.8.3 舍入函数舍入函数11.8.4 其他数学方法其他数学方法 Math类提供了进展复杂数学运算的一些途径,它保管了一切用于几何学、三角学以及几种普通用途方法的浮点函数。Math定义了两个双精度double常数:E近似为2.72和PI近似为3.14。11.8.1 11.8.1 超越函数超越函数 下面的三种方法对一个以弧度为单位的角度接纳一个双精度double参数并且前往它们各自的超越函数的结果。 static double sin(double arg):前往由以弧度为单位由arg指定的角度的正弦值; static double cos(double

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论