1 / 36

第 6 章 程序包和核心类

第 6 章 程序包和核心类. 包( package ). 作用 组织相关的源代码文件 防止类型名称发生冲突 提供程序包级别的封装和访问控制 其作用相当与 c 语言中的命名空间 使用方法: 使用关键字 package 在源代码的最前面添加一行: package somePackage 没有 package 声明的会成为 unnamed 程序包的一部分. 例 1 : package my.javaWork ; public class HelloWorld{ public static void main(String[] args){

zarek
Download Presentation

第 6 章 程序包和核心类

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 程序包和核心类

  2. 包(package) • 作用 • 组织相关的源代码文件 • 防止类型名称发生冲突 • 提供程序包级别的封装和访问控制 其作用相当与c语言中的命名空间 • 使用方法: 使用关键字package 在源代码的最前面添加一行: package somePackage • 没有package声明的会成为unnamed程序包的一部分

  3. 例1: package my.javaWork; public class HelloWorld{ public static void main(String[] args){ System.out.println(“Hello World!”); } }

  4. 导入包 • 使用关键字import。有2种方式 • import java.util.ArrayList; • import java.util.*; • import java.util.Zip.*;

  5. 程序包命名约定 • 使用所在机构的Internet域名构成程序包的前缀。 • 如:org.w3c.dom.Document是机构 w3c.org的域名为前缀 EDU.ken.cs.factor.*是机构cs.ken.edu的域名为前缀

  6. 包的使用方法 • 类属于某个包,那么类的源文件必须放置在该package所对应的相对路径下。 如:例1的源文件必须放置在相对路径 my\javaWork下 • 要使用某个程序包,需要将它的程序包目录包括到CLASSPATH中。 • 执行java程序时,必须到指定的包路径的上一层路径下执行。

  7. 如何编译执行例1 说明:在示范执行该类时,当前路径是d:\ • 先在当前目录下建以下目录:my\javaWork • 把例1的源文件存放在 d:\my\javaWork目录下,取名HelloWorld.java • 编译:命令行中,在当前路径下输入 javac my\javaWork\HelloWorld.java 或在任意路径下输入: javac d:\ my\javaWork\HelloWorld.java • 执行:在d:\路径下输入 java my.javaWork.HelloWorld

  8. 输入和输出 • java.io程序包提供面向字节和面向字符的I/O流,以支持大量实用的输入输出操作和将程序与操作系统特定的I/O细节隔离开来。 • 流是代表数据、字节或字符的有序序列的对象,这种对象具有输入源和输出目标。

  9. I/O源和目标

  10. 3种标准的I/O流:System.in、System.out、System.err可用于每个java程序。这些流是System类中用于从终端接受字节和向终端发送字节的静态字段。3种标准的I/O流:System.in、System.out、System.err可用于每个java程序。这些流是System类中用于从终端接受字节和向终端发送字节的静态字段。 • System.in是InputStream类的实例, System.out、System.err是PrintStream类的实例。

  11. 面向字节的I/O受InputStream、OutputStream及其子类的支持。用于ASCII和二进制I/O面向字节的I/O受InputStream、OutputStream及其子类的支持。用于ASCII和二进制I/O • 面向Unicode字符的I/O受Reader、Writer及其子类的支持。用于读写文本。

  12. I/O流的层次结构

  13. 文件I/O • InputStream/OutputStream的一个直接子类FileInputStream/FileOutputStream用于文件输入/输出 • new FileInputStream(name)-打开与name指定的文件名、File对象活FileDescriptor对象相连的输入流。 • new FileOutputStream(name)-打开与name指定的文件名、File对象活FileDescriptor对象相连的输出流

  14. File类提供用于在主机平台上检查和处理文件名、文件和目录的方法。创建File对象的语句:File类提供用于在主机平台上检查和处理文件名、文件和目录的方法。创建File对象的语句: • new File(name) • new File(dir.name) 例:File fo = new File(“c:\\abc\\xyz”);

  15. 缓冲式I/O • BufferedInputStream/BufferedReader和BufferedOutputStream/BufferedWriter 添加字节/字符缓冲区 例: BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream(“outFile”)); BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

  16. PrintStream/PrintWriter • PrintWriter输出代表基本类型和对象的字符串。使用重写的toString方法把基本数据类型、字符串和对象转换为字符序列输出。 • PrintStream功能类似,只是输出时会根据平台默认的字符编码把字符转换成字节

  17. 文件更新 • 使用RandomAccessFile同时对一个文件进行读写。 • 例2:LowerIO.java

  18. 文本和Unicode字符的I/O • 字符的输入输出由抽象的Reader和Writer子类来完成 • 例如:InputStreamReader和OutputStreamWriter类基本上可以提供与InputStream和OutputStream相同的操作,只是操作对字符起作用而不是对字节起作用。

  19. 例3:UnicodeIO.java

  20. DataInputStream和DataOutputStream • 提供了用于直接读写java的所有基本数据类型的方法。 • readType( )-返回读取的基本类型。 • writerType(d) -将参数d编写为指定的基本类型。 • 例4:DataIO.java

  21. ObjectInputStream和ObjectOutputStream • 用于直接读取对象。 • 要使用对象I/O,该对象必须实现Serializable接口。 • 例4:FreeIO.java

  22. 数字和日期格式化 • 见包java.text

  23. 捕获异常 try{ …… }catch(e-type1 e) {……} catch(e-type2 e) {……} …… finially{ …… }

  24. 指定异常 在方法名后加 throws Exception_1,…Exception_I 如: public void doio( )throwsSQLException, IOException

  25. 抛出异常 方法可以检测错误并指出或抛出异常。要抛出异常必须创建一个异常对象并使用throw运算符即可。 如: public void doio( File fo) { if( fo = = null) thrownewIOException(“File not found”); ……. }

  26. 异常类型 • Java解释程序异常-java运行时系统会在执行程序的过程中对字节代码进行解释,可以检测多种错误和异常(如空指针、除数为0、非法数组索引等)java解释程序保留了RuntimeException和Error类下的异常,java解释程序只会抛出这些异常。也叫运行期异常

  27. 已检测的异常-除java运行期异常都是已检测的异常。已检测的异常供用户代码使用,而且是方法调用的一部分。方法会指定可能由方法头中的throws子句引起的已检测异常。由编译器来检查throws规范是否正确。因此调用任何java方法时,都要知道应该如何处理已检测的异常。已检测的异常都是Exception超类的子类已检测的异常-除java运行期异常都是已检测的异常。已检测的异常供用户代码使用,而且是方法调用的一部分。方法会指定可能由方法头中的throws子句引起的已检测异常。由编译器来检查throws规范是否正确。因此调用任何java方法时,都要知道应该如何处理已检测的异常。已检测的异常都是Exception超类的子类

  28. 创建自定义异常 • 自定义的异常类都必须是Exception的直接或间接子类。 • 如: public class MatrixException extendsException { public MatrixException() {} public MatrixException(String s) { super(s); } }

  29. 其他核心包 • 数学计算 类:java.lang.Math为数学计算提供方法。 • java.util 例5:日期和日历的使用

  30. 系统和环境属性 • 显示系统和环境属性 • 加载和设置属性。 prop.txt是一个已存在的属性文件 Properties p = System.getProperties( ) Properties basePros = new Properties( p); FileInputStream in = new FileInputStream(“prop.txt”); basePros.load( in);

  31. import java.io.*; import java.util.Properties; public class ShowProp { public static void main(String[] args) throwsIOException { Properties p= System.getProperties(); p.list(System.out); FileOutputStream o = new FileOutputStream("prop.txt"); p.store(o, "Here it is"); o.close(); } }

  32. Properties p = System.getProperties( ) Properties basePros = new Properties( p); FileInputStream in = new FileInputStream(“prop.txt”); basePros.load( in);

  33. 小结 • InputStream(System.in)、OutputStream、FileInputStream、FileOutputStream-支持面向字节的I/O(8位) • InputStreamReader、OutputStreamWriter-提供字符I/O(16位unicode)。 • BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter-缓冲字节和字符I/O • PrintStream、PrintWriter-输出ASCII和基本类型与对象类型的字符串表示。

  34. RandomAccessFile-执行面向字节的文件更新和添加操作RandomAccessFile-执行面向字节的文件更新和添加操作 • DataInputStream、DataOutputStream-为基本类型执行二进制I/O • ObjectInputStream、ObjectOutputStream-为可串行化的对象执行二进制I/O。 • 一些常使用的核心包java.text、java.lang.Math、java.util等

More Related