A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qq563879497 中级黑马   /  2018-5-3 20:44  /  687 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第三周
1. 异常
(1) 概念:
① 编译或者运行时出现的错误
(2) 体系结构:
① Throwable(最顶层)
1) Error:出现的不能够处理的严重问题
2) Exception:可以处理的问题
(3) 异常的处理方式:
① 捕获处理:
1) Try...catch语句
Try{
有可能出现的问题代码
}catchArithmeticException ae{//产生异常对象后,会将异常对象试着去                                                                //赋值给对应变量
处理异常
}
2) Finally
a. 应用场景:释放资源,清理垃圾,因为finally里面肯定会执行
b. 用法:放在catch最后
c. 用处:组合try...catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码一定会执行
② 抛出异常
1) 当我们不想处理异常,或者能力处理的时候,我们可以选择跑出异常,谁调用方法谁吹了异常,使用关键字throws
③ Jvm的处理异常的方式(默认处理):
1) 如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行并且还会种植程序,异常后面的代码将不再执行
④ 如何处理多个异常
1) 可以使用多个try...catch语句
2) 使用一个try和多个catch
a. 多个catch之间的顺序
a) 父类异常要放在最后
⑤ Throwable的常用方法:
1) catch里面的异常名.方法
a. String         getmessage():原因
b. String        toString():类型和原因
c. Void                printStackTrace():类型原因和位置
(4) 异常分类:
① 运行时期异常
1) RuntimeException的子类就是运行时期异常,在编译时期可以选择处理或者不处理
② 编译时期异常
1) Exception的子类,非RuntimeException的子类,在编译时期必须处理
(5) 自定义异常
① 为何要自定义异常:自己编写代码给别人使用,那么如果使用有问题,那么需要给出错误信息,这个时候可以选择抛出异常,如果想名字见名知意,就可以自定义异常
怎么定义:定义类,继承Exception或者RuntimeException,定义两个构造,一个无参,一个带一个字符串参数
2. 递归
(1) 概念:把大问题拆成很多小问题,然后再把小问题拆成更多的小问题,当我们把更多的小问题解决了,小问题也解决了,随着小问题的解决,大问题也随之解决了。方法本身不断的调用方法自己
(2) 注意事项
① 递归一定要有出口,内存溢出
② 递归次数不宜过多,内存溢出
3. file
(1) 概念:文件和目录路径名的抽象表示形式,file类的实例不可改变
(2) 构造方法:
① fileFile parentString child)格局指定的父路径对象和文件路径创建File对象
② fileString pathname)将制定的路径名转换成一个File对象
③ fileString parentString child)根据指定的父路径和文件路径创建File对象
(3) 常用功能:太多了,详见APIε=(´ο`*)))
① 创建功能
1) boolean createNewFile()创建文件
2) boolean mkdir()创建文件夹
3) boolean mkdirs() 创建多个文件夹
② 删除功能
1) boolean delete()删除指定的文件夹
③ 获取功能
1) File getAbsoluteFile()获取绝对路径
④ 判断功能
1) boolean exists()
(4) 重要的获取功能:
① String[]        list():返回当前路径下所有的文件和文件夹名称
② File[]        listFiles():返回file数组,
③ static File[]        listRoots:返回所有盘符
4. IO流体系
(1) 流向
输入流:读数据 FileReader 父类是Reader
输出流:写出数据 FileWriter 父类是Writer
(2) 数据类型
① 字节流
1) 字节输入流:        读取数据        父类:InputStream
2) 字节输出流:        写出数据        父类:OutputStream
② 字符流
1) 字符输入流:        读取数据        父类:Reader
2) 字符输出流:        写出数据        父类:Writer
5. 其他:
(1) .lenth()不能直接统计文件夹的大小,只能将文件夹内的的所有文件大小加起来
day10
1. IO流:
(1) 数据流
① 数据源:键盘
② 目的地
(2) 不同IO流区别:操作的数据类型、效率、数据源和目的地不一样
(3) 案例
① System.in 是一个字节输入流,指向的数据源来自键盘录入
1) Scanner只是将System.in进行了包装
② System.out 是一个字节输出流,目的地指向控制台
(4) OutputStreamWriterOutputStream out):输出转换流,把字节输出流转换成字符输出流
(5) InputStreamReader(InputStream in):输入转换流
2. 打印流
(1) PrintStream
(2) PrintWriter
可以自动换行,println
② 不能输出字节,但是可以输出其他任意类型
通过某些配置,可以实现自动刷新(只有在调用printlnprintfformat才有用)
④ 也是包装流,不具备写出功能
⑤ 可以把字节输出流转换成字符输出流
(3) 注意:只能输出
3. 对象操作流:可以用于读写任意类型的对象
(1) ObjectOutputStream
① writerobject
(2) ObjectInputStream
① readobject
(3) 注意:
① 使用对象输出流,只能用对象输入流来读写
只能支持java.io.Serializable接口的对象写入流中(操作的接口必须实现serializable)
4. IO流的各种常用的创建格式:未完成
(1) 高效输出流:BufferedWriter bw=new BufferedWriter(new FileWriter(“路径”));
(2) 高效输入流:BufferedReader br=new BufferedReader(new FileReader(“路径”));
(3) 字符打印流:PrintWriter pw=new PrintWriter(new FileWriter("路径"),true);
(4) 字节打印流:PrintReader pr=new PrintReader(new FileReader("路径"),true);
(5) 高效字节输入流:BufferedInputStream bis=new BufferedInputStream(new  FileInputStream(“路径”));
(6) 高效字节输出流:BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(“路径”));
5. Properties:比较重要,用法类似于Map,但是泛型用String就好,两个重要的方法1.load:相当于read,需要传入一个read对象。2.store:相当于writer,需要传入一个writer对象
day11
1. 进程:当前正在运行的程序,一个应用程序在内存中的执行区域
(1) 一个进程可以有一个线程,也可以有多个线程
① 单线程:安全性高,效率低
② 多线程:安全性低,效率高
2. 线程:进程中的一个执行控制单元,执行路径
3. 多线程
(1) 实现方式1
定义类,继承Thread
重写run方法
创建Tread子类对象
调用start()方法        注意:不是调用run方法
(2) 实现方式2
定义类,实现runnable接口
1) class 类名 implement  Runnable
重写run方法
创建runnable实现类对象
1) 类名  变量名 =new 类名;
创建Thread的对象,将Runnable实现类对象传递进去
1) Thread t=new Thread(类名);
⑤ Thread的对象,调用start()启动线程
1) t.start();
4.注意:继承Thread的时候,多线程共享数据的时候要加staticsynchronized (this)不能再用this最好用类名.class

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马