36
第 6 第 第第第第第第第

第 6 章 程序包和核心类

  • Upload
    zarek

  • View
    146

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 第 6 章 程序包和核心类

第 6 章 程序包和核心类

Page 2: 第 6 章 程序包和核心类

包( package)

作用 组织相关的源代码文件 防止类型名称发生冲突 提供程序包级别的封装和访问控制其作用相当与 c语言中的命名空间

使用方法:使用关键字 package在源代码的最前面添加一行:

package somePackage 没有 package 声明的会成为 unnamed 程序包的一部分

Page 3: 第 6 章 程序包和核心类

例 1 :package my.javaWork ;public class HelloWorld{

public static void main(String[] args){System.out.println(“Hello World!”);

}}

Page 4: 第 6 章 程序包和核心类

导入包

使用关键字 import 。有 2 种方式 import java.util.ArrayList; import java.util.*; import java.util.Zip.*;

Page 5: 第 6 章 程序包和核心类

程序包命名约定

使用所在机构的 Internet 域名构成程序包的前缀。

如: org.w3c.dom.Document 是机构 w3c.org 的域名为前缀EDU.ken.cs.factor.* 是机构 cs.ken.edu 的域名为前缀

Page 6: 第 6 章 程序包和核心类

包的使用方法

类属于某个包,那么类的源文件必须放置在该 package 所对应的相对路径下。如:例 1 的源文件必须放置在相对路径

my\javaWork 下 要使用某个程序包,需要将它的程序包目

录包括到 CLASSPATH 中。 执行 java 程序时,必须到指定的包路径的

上一层路径下执行。

Page 7: 第 6 章 程序包和核心类

如何编译执行例 1

说明:在示范执行该类时,当前路径是 d:\1. 先在当前目录下建以下目录: my\javaWork2. 把例 1 的源文件存放在 d:\my\javaWork 目录

下,取名 HelloWorld.java3. 编译:命令行中,在当前路径下输入

javac my\javaWork\HelloWorld.java或在任意路径下输入:javac d:\ my\javaWork\HelloWorld.java

4. 执行:在 d:\ 路径下输入java my.javaWork.HelloWorld

Page 8: 第 6 章 程序包和核心类

输入和输出

java.io 程序包提供面向字节和面向字符的I/O 流,以支持大量实用的输入输出操作和将程序与操作系统特定的 I/O 细节隔离开来。

流是代表数据、字节或字符的有序序列的对象,这种对象具有输入源和输出目标。

Page 9: 第 6 章 程序包和核心类

I/O源和目标

Page 10: 第 6 章 程序包和核心类

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

System.in 是 InputStream 类的实例, System.out 、 System.err 是 PrintStream 类的实例。

Page 11: 第 6 章 程序包和核心类

面向字节的 I/O 受 InputStream 、 OutputStream 及其子类的支持。用于 ASCII 和二进制 I/O

面向 Unicode 字符的 I/O 受 Reader 、 Writer 及其子类的支持。用于读写文本。

Page 12: 第 6 章 程序包和核心类

I/O 流的层次结构

Page 13: 第 6 章 程序包和核心类
Page 14: 第 6 章 程序包和核心类

文件 I/O

InputStream/OutputStream 的一个直接子类 FileInputStream/FileOutputStream 用于文件输入 / 输出 new FileInputStream(name) -打开与 name 指定的文

件名、 File 对象活 FileDescriptor 对象相连的输入流。 new FileOutputStream(name) -打开与 name 指定的文

件名、 File 对象活 FileDescriptor 对象相连的输出流

Page 15: 第 6 章 程序包和核心类

File 类提供用于在主机平台上检查和处理文件名、文件和目录的方法。创建 File 对象的语句: new File(name) new File(dir.name)

例: File fo = new File(“c:\\abc\\xyz”);

Page 16: 第 6 章 程序包和核心类

缓冲式 I/O

BufferedInputStream/BufferedReader 和 BufferedOutputStream/BufferedWriter添加字节 / 字符缓冲区

例:BufferedOutputStream out = new BufferedOutputStream

(new FileOutputStream(“outFile”));BufferedReader br = new BufferedReader

(new InputStreamReader(System.in));

Page 17: 第 6 章 程序包和核心类

PrintStream/PrintWriter

PrintWriter 输出代表基本类型和对象的字符串。使用重写的 toString 方法把基本数据类型、字符串和对象转换为字符序列输出。

PrintStream 功能类似,只是输出时会根据平台默认的字符编码把字符转换成字节

Page 18: 第 6 章 程序包和核心类

文件更新

使用 RandomAccessFile 同时对一个文件进行读写。

例 2 : LowerIO.java

Page 19: 第 6 章 程序包和核心类

文本和 Unicode字符的 I/O

字符的输入输出由抽象的 Reader 和 Writer子类来完成

例如: InputStreamReader 和 OutputStreamWriter 类基本上可以提供与 InputStream和 OutputStream 相同的操作,只是操作对字符起作用而不是对字节起作用。

Page 20: 第 6 章 程序包和核心类

例 3 : UnicodeIO.java

Page 21: 第 6 章 程序包和核心类

DataInputStream和 DataOutputStream

提供了用于直接读写 java 的所有基本数据类型的方法。 readType( ) -返回读取的基本类型。 writerType(d) -将参数 d 编写为指定的基本

类型。 例 4 : DataIO.java

Page 22: 第 6 章 程序包和核心类

ObjectInputStream和 ObjectOutputStream

用于直接读取对象。 要使用对象 I/O ,该对象必须实现 Serializ

able 接口。 例 4 : FreeIO.java

Page 23: 第 6 章 程序包和核心类

数字和日期格式化

见包 java.text

Page 24: 第 6 章 程序包和核心类

捕获异常

try{……

}catch(e-type1 e){……}catch(e-type2 e){……}……finially{……}

Page 25: 第 6 章 程序包和核心类

指定异常

在方法名后加throws Exception_1,…Exception_I

如:public void doio( )throws SQLException, IOException

Page 26: 第 6 章 程序包和核心类

抛出异常

方法可以检测错误并指出或抛出异常。要抛出异常必须创建一个异常对象并使用 throw 运算符即可。

如:public void doio( File fo){

if( fo = = null)throw new IOException(“File not found”);

…….}

Page 27: 第 6 章 程序包和核心类

异常类型

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

Page 28: 第 6 章 程序包和核心类

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

Page 29: 第 6 章 程序包和核心类

创建自定义异常

自定义的异常类都必须是 Exception 的直接或间接子类。

如:public class MatrixException extends Exception{

public MatrixException() {} public MatrixException(String s) { super(s); } }

Page 30: 第 6 章 程序包和核心类

其他核心包

数学计算类: java.lang.Math 为数学计算提供方法。

java.util

例 5 :日期和日历的使用

Page 31: 第 6 章 程序包和核心类

系统和环境属性

显示系统和环境属性 加载和设置属性。

prop.txt 是一个已存在的属性文件Properties p = System.getProperties( )Properties basePros = new Properties( p);FileInputStream in =

new FileInputStream(“prop.txt”);basePros.load( in);

Page 32: 第 6 章 程序包和核心类

import java.io.*;import java.util.Properties;public class ShowProp{

public static void main(String[] args) throws IOException { PropertiesProperties p= p= SystemSystem.getProperties();.getProperties(); p.list(System.out); FileOutputStream o = new FileOutputStream("pro

p.txt"); p.store(o, "Here it is"); o.close(); }}

Page 33: 第 6 章 程序包和核心类

Properties p = System.getProperties( )

Properties basePros = new Properties( p);

FileInputStream in =

new FileInputStream(“prop.txt”);

basePros.load( in);

Page 34: 第 6 章 程序包和核心类

小结

InputStream(System.in)、 OutputStream、 FileInputStream、 FileOutputStream -支持面向字节的 I/O ( 8位)

InputStreamReader、 OutputStreamWriter -提供字符 I/O ( 16位 unicode )。

BufferedInputStream、 BufferedOutputStream、BufferedReader、 BufferedWriter -缓冲字节和字符 I/O

PrintStream、 PrintWriter -输出 ASCII 和基本类型与对象类型的字符串表示。

Page 35: 第 6 章 程序包和核心类

RandomAccessFile -执行面向字节的文件更新和添加操作

DataInputStream、 DataOutputStream -为基本类型执行二进制 I/O

ObjectInputStream、 ObjectOutputStream -为可串行化的对象执行二进制 I/O 。

一些常使用的核心包 java.text、 java.lang.Math、 java.util 等

Page 36: 第 6 章 程序包和核心类