异常
1异常处理机制
编译时错误
运行时错误
代码逻辑错误
2异常类结构图
java.lang.Throwable 所有异常的父类 只有它能剖出异常
java.lang.Error: extends Throwable 程序中的硬件严重问题不需要处理
java.lang.Exception extends Throwable 异常 指出要捕获的处理条件
3异常的分类
1 RuntimeException异常及所有子类(运行时异常,非检查异常)
空指针 下标越界 此类异常产生原因:逻辑错误 在程序中出现的几率比较小
2Exception及子类异常(RunctimeException):检查异常 强制错误 编译错误
SQLException IOException
此类异常产生原因:程序与其他第三方的程序进行数据交互时 要处理的异常
4异常的处理方式:
1try -catch
语法:
try{
可能出现的异常的代码
检查异常的代码
创建一个出现异常的异常类对象
}catch(Exception e){
匹配异常对象
处理异常
}
如果代码有可能出现多种异常时 是一起处理还是分开处理?
分析有无逻辑关系
try带有多个catch时,catch的异常有无顺序要求?
1如果catch多个异常有继承关系 先子类后父类。
try有多个catch 是否可以使用一个父类异常捕获?
解决方案相同,可以。
finally:
与try一起使用,表示程序是否出现异常,都必须要执行的代码。
当代码中同时有return与finally时,先执行谁?
·
问 final,finally,finalize三者区别?
final:修饰符,修饰类表示类不能被继承
修饰成员方法 表示此方法不能被子类重写
修饰变量,表示此变量不可更改
finally:与try一起使用 表示必须要执行的代码块 常用于释放资源
finalize:自动垃圾回收。
throws:在方法上声明异常
语法:
访问修饰符 返回值类型 方法名()throws 异常类名{};
方法重写时,声明异常不能更广泛;
程序的异常处理是选择try-catch还是throws
dao:产生数据库操作异常 使用throws
service:(try catch)处理数据异常,throws产生业务逻辑异常
throw关键词:抛出异常对象
语法: throw new 异常类构造方法();
自定义异常类:
当API异常类型与业务逻辑异常不匹配时,自定义异常
定义一个继承Exception的子类
常与throw一起使用
throw new 自定义异常类构造方法();
异常的关键词
try: try块中放可能出现异常的或有检查异常的代码
catch:捕获异常 并处理
finally: 在异常处理机制与try一起使用,表示必须要执行的代码块,常用于释放资源
throws:在方法上声明异常
throw:抛出异常对象
IO流知识点:java.io包
【Java基础】I/O流 —— Java中的流都需要关闭吗?_outputstream需要关闭吗-CSDN博客
File类及相关方法
IO流的分类
字节类结构图 应用
ObjectOutputStream
ObjectInputStream
字符流类结构图 应用
java.util.Properties应用(重)
学习方式:
输入和输出流成对使用
File类及相关方法
IO流的分类
流(stream):数据从一端传输到另一端形成的有序数据流
IO:对java程序数据进行输入和输出
I :输入
数据传输到java程序中
O:输出
把java程序中的数据写出到其他程序中
2 IO流
按方向分: 输入输出
按读取字节大小分: 字节流 字符流(两字节)
按功能分:
节点(低端流) 直接操作数据
处理流(高端流) 装饰节点流 提高效率
字节流
类结构
InputStream OutputStream
FileInputStream FileOutputStream
BufferedInputStream(包装流)
ObjectInputStream
常用方法:
2. 1 输入流
int read()
从输入流中读取数据的下一个字节。
返回值 ,返回单个字节 ,文件结尾返回-1
int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
返回值:每次读取的字节的数量 ,文件结尾返回-1
int read(byte[] b, int off, int len)
将输入流中最多 len 个数据字节读入 byte 数组。
返回值:每次读取的字节的数量 ,文件结尾返回-1
void close()
关闭此输入流并释放与该流关联的所有系统资源。
2.2 输出流
void close()
关闭此输出流并释放与此流有关的所有系统资源。
void flush()
刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract void write(int b)
将指定的字节写入此输出流。
FileInputStream fileInputStream = new FileInputStream("e:/dnf怀旧/a.txt");
int read ;
while ((read = (fileInputStream.read())) != -1){
System.out.print((char) read);
}
fileInputStream.close();
FileOutputStream fileOutputStream = new FileOutputStream("e:/dnf怀旧/a2.txt");
fileOutputStream.write("advsdv".getBytes());
fileOutputStream.write("ad1v32131s31dv".getBytes());
fileOutputStream.close();
节点流 高端流
1BufferedInputstream
2常用方法:
输入流
int read():读取单个字符 到文件结尾返回-1
int read(char [])
java.util.Properties
硬编码和软编码的区别?
线程:
程序 进程 线程的区别?
程序:按一定顺序编写指令集合,存储在磁盘上
进程:运行程序,系统为每个进程分配一定的内存空间
线程:在进程内部可以独立运行的代码块
同一进程中 可以有多个线程(共享堆区的数据) 多个线程共享所在进程的内存空间
线程结束 ,进程不会结束; 进程结束相关线程强制结束
同一个进程中, 多个线程同时进行 ;
以抢占cpu(时间切片)方式运行 并发运行
创建线程的几种方式
定义一个线程类 继承java.lang.Thread 重写run方法
启动线程的方法
start(): 启动线程的方法
run():线程启动后运行的方法
setName() getName() 线程设置名字的方法
Thread.currentThread()返回当前线程对象
线程的生命周期
线程的分类
线程调度的几种方法
线程同步