Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章

上传人:E**** 文档编号:89346963 上传时间:2019-05-23 格式:PPT 页数:120 大小:638.50KB
返回 下载 相关 举报
Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章_第1页
第1页 / 共120页
Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章_第2页
第2页 / 共120页
Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章_第3页
第3页 / 共120页
Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章_第4页
第4页 / 共120页
Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章》由会员分享,可在线阅读,更多相关《Java程序设计教程 教学课件 ppt 作者 曾令明 7-11 第7章(120页珍藏版)》请在金锄头文库上搜索。

1、,第7章 基础类介绍,7.1 包 7.2 Java类库的结构 7.3 java.lang包中的常用类 7.4 java.util包中的集合类 7.5 关于Java技术文档 练习题,7.1 包 7.1.1 包的概念 包是由 .class文件组成的一个集合。Java是一种面向对象的语言,它的特点就是重用,包就是组织和管理 .class文件的一种工具,因此,它存在的目的就是帮助用户实现代码的重用。包是一种松散的概念,一般情况下,功能相同或者相关的类(实际上就是将 .class文件组织在一起)组织在一个包中,总之,包是一种以某种规则组织类的工具。,7.1.2 构建包 一个包事实上就是一个文件夹,这个文

2、件夹中存放着.class文件。包像目录结构一样可以有多层结构,各层之间以“.”来分隔,如java.io,java.awt,java.awt.color等。由于Java的类经常需要在互联网上运行,因此有可能出现同名的类,程序就不知道使用哪一个类了。但如果把类都放在不同的包中,并且使包的名字唯一,就不会出现混乱状况。,程序中定义包用package这个关键词,它的格式如下: package 包名; 例如: package MyJavaProgram; package panyname.myname,这个语句必须放在一个源文件的第一句,并且语句前面无空格。包名一般全部用小写。我们知道一个源文件可能有多

3、个类,其中只有一个类是公共类,这些类经编译都会产生 .class文件,上面例子的意思是,这个源文件中的类经编译产生的 .class文件属于一个包,名为MyJavaProgram,这就定义了MyJavaProgram包。一般把要打包的源文件放到包中,然后在包中对源文件进行编译,这样就把 .class文件放入包中了。当然javac编译器还有几个参数,可以实现确定源文件来源和 .class文件放置等功能,可以实现源文件和 .class文件不在同一个目录。下面是各种参数及其解释。,-g 生成所有debug信息。 -g:none 不生成任何debug信息。 -g:lines,vars,source:只生

4、成部分debug信息。 -O:优化。 -nowarn 不生成警告。 -verbose 输出编译器的工作记录。 -deprecation 输出所有过期API的位置。 -classpath 声明查找用户类库的路径。 -sourcepath 声明查找源文件的路径。 -bootclasspath 覆盖引导类文件路径。 -extdirs 覆盖安装扩展路径。 -d 声明将生成的.class文件放在何处。 -enconding 声明源文件的编码方式。 -traget 未指定版本的虚拟机生成类文件。,7.1.3 包的引用 用import语句可以引入所需的公共类。如: import java.io.*; 这个语

5、句表示java.io中所有的公共类被引入当前包。系统先根据classpath指示的路径,然后按照包名找到所需的类,如classpath为c:packagemypakage,而包名为. companyname.myname,则系统按照以下路径去寻找所需的类:c:packagemypackage cncomcompanynamemyname,也就是把环境变量和包名相连,形成路径,然后在这个路径下寻找类。对于Java类库,由于安装时已经自动注册了路径,因而不需要添加classpath,而使用自己定义的包中的类就必须更改classpath。,还可通过另一种方法使用某个包中的类,就是在程序中写全它的包名

6、,而不使用import语句,如: java.io.FileInputStream in = new java.io.FileInputStream(); 如果使用了一个包中的大多数类,可通过使用通配符的方式引用包,否则,最好把需要的类一一列出来,这样可以节省大量系统资源。,7.2 Java类库的结构 类库即Java API(Application Programming Interface,应用程序接口),是系统提供的已实现的标准类的集合。在程序设计中,合理和充分利用类库提供的类和接口,不仅可以完成字符串处理、绘图、网络应用、数学计算等多方面的工作,而且可以大大提高编程效率,使程序简练、易懂。

7、 Java类库中的类和接口大多封装在特定的包里,每个包具有自己的功能。表7-1列出了Java中一些常用的包,其中,包名后面带“. *”的表示其中包括一些相关的包。有关类的介绍和使用方法,Java中提供了极其完善的技术文档,读者只需了解技术文档的格式就能方便地查阅文档。,表7-1 Java提供的部分常用包,7.3 java.lang包中的常用类 7.3.1 Object类 Object类是Java程序中所有类的直接或间接父类,也是类库中所有类的父类,任何一个类都是由Object类派生出来的,它是继承树上的根节点。所以它含有的属性和方法将被所有的类继承。下面就是Object类的方法,也是所有类都含

8、有的方法。 (1) protected Object clone() throws CloneNotSupportedException:生成当前对象的一个复制,并返回这个复制的对象,该对象类型为Object,但所有需要使用该方法的类都必须实现接口cloneable,否则,运行时将抛出CloneNotSupportedException类的异常。,(2) public final Class getClass():返回一个当前对象在运行期的Class类对象。Class类见后面小节。 (3) public int hashCode():返回一个hash code value,不同的对象有不同的h

9、ash code value。 (4) public boolean equals(Object obj):如果当前对象与形参对象相同则返回true,否则返回false。值得注意的是,所有的对象之间比较值是否相同必须使用equals方法,尤其大家容易忽略的是String类,两个字符串要比较内容是否相同必须使用这个方法,否则系统比较的是它们的地址指针,返回结果肯定会是“否”。,(5) public String toString():返回一个反映这个对象信息的字符串,通常是对象所属类,建议编程时对其重载,以便输出更多有用信息。 (6) public final void notify():这是关

10、于多线程的方法,这个方法用来唤醒等待对象监视器的多个线程中的一个。 (7) public final void notifyAll():这个方法是唤醒所有等待这个监视器的线程。,(8) public final void wait(long timeout) throws InterruptedException:这个方法是让当前线程放弃对这个对象的同步的声明,即放弃对这个对象的锁定,进入等待行列,直到由notify()或notifyAll()方法唤醒,或形参中规定的时间到期,timeout的单位是毫秒。 如果这个当前线程在等待中被中断,将抛出InterruptedException类异常;如

11、果形参为负数,将抛出IllegalArgumentException类异常;如果当前线程没有该对象的监视权,将抛出IllegalMintorStatusException类异常,后两种异常都是运行期异常,所以未标明。,(9) public final void wait(long timeout,int nanos)throws InterruptedException:这个方法比上一个多了一个形参,第二个形参的意思是nanoseconds(十亿分之一秒),这个方法的等待时间变为两个形参所指示的时间的和,时间控制更精确。 (10) public final void wait()throws

12、InterruptedException:这个方法的含义同wait(0)。 (11) protected void finalize()throws Throwable:这个方法用来把对象从内存中清除,由垃圾收集器自动调用,编程者可以重载这个方法,在对象被清除时,显示某些信息。,7.3.2 Class类 Class类是非常特殊的,它的对象将伴随每个类。当一个类X被编译后,就有一个特殊的对象(Class对象)产生,它隐藏在X.class文件中,Class对象是由编译系统自动生成的。当用这个类X来创建对象时,用于执行程序的Java虚拟机(JVM)首先就会检查那个类X的Class对象是否已经载入。如

13、果尚未载入,JVM就会查找X.class文件,并将其载入。一旦那个类X的Class对象进入内存,就用它创建那一类的所有对象。所以Java程序被执行时并不是把所有的类完全地一次性载入。,下面是Class类中一些常用的方法。 (1) public static Class forName(String className)throws ClassNotFoundException:这个方法是静态方法,所以用Class直接调用。方法的形参是一个类名,方法的返回值是形参指示的类的Class对象。例如: Class t = Class.forName(“java.lang.Thread“),(2) pu

14、blic String getName():该方法返回Class对象代表的实体(类、接口、数组、基本数据类型等)的名字。例如,(new Object().getClass().getName()的值是java.lang.Object,当然可以放到println()语句中输出。其中的getClass()用来得到当前对象的Class对象,同一个类的对象有相同的Class对象。 (3) public Class getSuperclass():这个方法不同于Object类的方法getClass(),它返回的是一个数组,这些数组成员是Class对象,这些对象是当前类中的成员为公共类或接口所对应的Cla

15、ss类的实例。,(4) public ClassLoader getClassLoader():这里需要讲一下ClassLoader,它是一个抽象类,在java.lang包中。任何一个类加载内存,都是通过一个对象来实现的,这个对象就是ClassLoader衍生类的实例,因为类的定义都是以字节码文件形式存在的,加载一个类就是读取这些字节码。这个文件可能放在不同的地方。 (5) public Class getComponentType():返回数组成员的类型,如果当前对象不是数组,返回null(空值)。,(6) public int getModifiers():返回类或接口的修饰语,例如pub

16、lic、protected、private、final、static和abstract 等,但它们用一个int数表示。 (7) public Class getDeclaringClass():如果当前对象是另一个类的成员,则返回那个类的Class对象,否则为空。 Class类中的其他方法,请读者查看Java的技术文档。,【例7-1】Class类使用示例。 class Candy static System.out.println(“Loading Candy“); class Gum static System.out.println(“Loading Gum“); ,class Cookie static System.out.println(“Loading Cookie“); publi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号