如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Java核心编程
薛安振
大纲
1. 异常
2. 集合
3. 输入输出
4. 多线程
5. JNI
6. RMI
7. 图形界面
8. 注解
异常
什么是异常
1. 异常是一个发生在程序执行期间的事件,打运行下面的程序,看看会怎样
断程序的正常执行。
2. 异常对象:错误发生时,程序创建一个对象
并传递给运行环境,这个对象包含了错误信
息、类型、发生错误时的程序状态。
3. 创建错误对象并传递给运行环境的过程称为
抛出一个异常。
4. 异常控制是Java健壮性的重要体现。
异常基本处理结构
try{
…
}catch(){
…
}catch(){
…
}finally{
…
}
自定义异常
声明异常
练习
一旦某个方法声明了异常,那
么在调用它时就必须用try-
catch进行安全保护,或者显式
抛出。
异常的层次和场景
• Error类对象(如动态连接错误等),由Java虚拟机
生成并抛弃(通常,Java程序不对这类例外进行处理);
• Exception类对象是Java程序处理或抛弃的对象。它有
各种不同的子类分别对应于不同类型的例外。
• 其中类RuntimeException代表运行时由Java虚拟机生
成的例外,如算术运算例外ArithmeticException(由除
0错等导致)、数组越界例外
ArrayIndexOutOfBoundsException等;
• 其它则为非运行时例外,如输入输出例外
IOException等。Java编译器要求Java程序必须捕获或
声明所有的非运行时例外,但对运行时例外可以不
做处理。
使用好异常
• 反例之一:丢弃异常15行-18行。
• 反例之二:不指定具体的异常15行。
• 反例之三:占用资源不释放3行-14行。
• 反例之四:不说明异常的详细信息3行-18行。
• 反例之五:过于庞大的try块3行-14行。
• 反例之六:输出数据不完整7行-11行。
使用好异常
集合
集合接口
1. Collection—一组对象
2. Set—不包含相同对象单元的集合
3. List—有顺序的,可包含重复对象的集
合
4. Queue—支持队列操作的集合,
since1.5
5. Map—键值对集合
6. SortedSet—升序排列的set
7. SortedMap—键升序排列的Map
常用实现
例
还有更多,请参考API
丰富一点
再丰富一点
例子
进阶:
增加对象;
调用别的API方法。
选择你要的实现
工具类java.util.Arrays
工具类java.util.Collections
练习:
写个小程序,使用
collections里的5个方法。
输入输出
基本示例
读写文件
演示
文件操作
演示
字符流–16位Unicode
演示
管道流
管道用来把一个程序、线程和代
码块的输出连接到另一个程序、
线程和代码块的输入。
管道输入流作为一个通信管道的
接收端,管道输出流则作为发送
端。管道流必须是输入输出并
用,即在使用管道前,两者必须
进行连接
NIO新IO
通道
文件锁
序列化serializable
序列化的作用
演示
用transient关键字保护不想序列化的内容
总结
多线程
定义和启动线程
实现runnable接口
继承thread类
让线程睡
打断线程
Thread.interrupt()
等待其它线程完成
后台线程
使用Thread建立的线程默认情况下是前台线程,在进程
中,只要有一个前台线程未退出,进程就不会终止。主
线程就是一个前台线程。而后台线程不管线程是否结
束,只要所有的前台线程都退出(包括正常退出和异常
退出)后,进程就会自动终止。一般后台线程用于处理
时间较短的任务,如在一个Web服务器中可以利用后台
线程来处理客户端发过来的请求信息。而前台线程一般
用于处理需要长时间等待的任务,如在Web服务器中的
监听客户端请求的程序,或是定时对某些系统资源进行
扫描的程序。
线程状态
竞争:多个线程访问一个资源
协作
通信
死锁
线程池
线程池的作用:
线程池作用就是限制系统中执行线程的数
量。
根据系统的环境情况,可以自动或手动设置
线程数量,达到运行的最佳效果;少了浪费了
系统资源,多了造成系统拥挤效率不高。用线
程池控制线程数量,其他线程排队等候。一个
任务执行完毕,再从队列的中取最前面的任务
开始执行。若队列中没有等待进程,线程池的
这一资源处于等待。当一个新任务需要运行
时,如果线程池中有等待的工作线程,就可以
开始运行了;否则进入等待队列。
有返回值的线程
其他新特性
as****16
实名认证
内容提供者
最近下载