- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
1. 第十九天回顾。Map集合
Map接口4个方法 pub getkeySet entrySet
获取方式两种,代码熟练度
HashMap,Hashtable区别,底层都是哈希表,HashMap线程不安全,允许存储null,Hashtable线程安全,不允许存储null,存储到集合的对象hashCodeequals
TreeMap 红黑树,线程不安全,存储对象具备自然顺序,或者,比较器
Properties继承自Hashtable,线程安全的集合,IO流结合使用 gettPropertysetProperty
Collections sortreverseOrder binarySearch synchronized
数组集合互换,Arrays.asList Collection toArray
异常:体系Throwable Exception RuntimeException
try..catch 结构语法。 throwthorws的用法区别
finally 必须执行,不要写return
2. 第二十天学习内容,编译异常,运行异常。自定义异常,子类父类重写方法中的异常。IO流技术,分类,每个类的顶层父类--抽象类。 IO技术写文件,读取文件
3. 编译异常和运行异常
编译时期异常:当你调用一个方法,这个方法抛出异常,调用者必须处理,否则编译失败,处理方式可以try 可以抛
运行时起异常:RuntimeException类,和他的所有子类,都称为运行时起异常,方法中如果抛出的异常是运行时期异常,方法的声明上不需要throws,对于调用者,不需要try catch处理异常。
运行时期异常的设计初衷:运行时起异常不能出现的,一旦发生,不要处理异常。程序必须停下,修改源代码。
运行时期的异常,一旦反生了,后面所有程序不会在执行,出现的频率一般在于对方乱传参数,导致程序无法执行,请你使用运行时期异常
IndexOutOfBoundsException,越界(字符串,和数组) NullPointerException空指针
ClassCastException 类型转换异常 NoSuchElementException没有元素被取出
IllegalArgumentException 无效参数异常
4. 自定义的异常
Java中异常体系,将很多的情况都做了异常封装,但是实际的开发中,不可能把所有的异常都描述完毕,需要自定义的异常,用来描述自己程序中可能发生的异常
自定义异常步骤:
定义类,后缀名Exception继承Exception类,或者继承RuntimeException
异常信息,自定义的异常类的构造方法,把异常信息使用super传递到父类
注意:只有异常类,才具备可抛性 throw new 异常体系的类
通过刚才案例:
如果一个方法中,抛出多个异常,必须要throws声明多个异常(运行时起除外)
调用者,使用多个catch进行异常的捕获
多个catch中,最大(继承关系)的父类,写在最后面,否则编译失败
5. 子类父类中的异常抛出
前提:子类重写父类的方法
l 父类的方法抛出了异常,子类重写后,异常:父类抛异常,子类可抛可不抛,但是,如果子类抛,不能抛出比父类还大的异常
l 父类的方法不抛异常,子类重写后,子类不能抛出异常。如果子类重写的方法中,调用了一个抛异常的方法,子类别无选择,只能try...catch处理异常
6. IO流概述
处理设备之间的数据传输:设备计算机中存储设备,硬盘,U盘,手机,可能是另一台主机
Java对数据的操作,通过流的形式。操作存储设备中的数据,流技术实现,程序和设备之间建立连接通道,数据流。I Input 输入 O Output输出
字符流: 开始JDK1.1 字符流专门用于操作文本文件,记事本可以打开的,人可以看懂的文件。 每次操作1个字符 16个二进制,去查询本机默认的编码表。方便Java程序操作纯文本。 .txt .java .html .xml .css
字节流:开始JDK1.0 字节流操作文件是任意文件。每次操作1个字节8个二进制。不查询编码表 。
按照流向分,输入流和输出流
输入: 程序读取文件
输出: 程序写入文件
7. IO流的分类
字符输出流: 写文本文件的,抽象基类java.io.Writer
写的方法 write,很多重载形式,写字符数组,单个字符,字符串,字符数组一部分,字符串的一部分。 flush 刷新流的缓冲 close关闭流对象
字符输入流:读取文本文件的,抽象基类java.io.Reader
读的方法 read,很多重载形式,读取单个字符,字符数组,字符数组一部分。close关闭流对象
字节输出流:写任意的文件,抽象基类java.io.OutputStream
写的方法 write,很多重载形式,写单个字节,字节数组,字节数组一部分。 close关闭流对象
字节输入流:读取任意文件,抽象基类java.io.InputStream
读的方法 read,很多重载形式,读取单个字节,字节数组,字节数组一部分。close关闭流对象
IO流中的所有类的命名法则:后缀都是父类名,前面都是可以操作的文件名,流向名
FileInputStream FileReader ObjectInputStream InputStreamReader
8. IO流的书写
IO使用,导入java.io包
IO流类中的方法,大多数都会抛出异常,调用者try ,, throws
IO流对象,没有实际的功能操作文件,依赖操作系统来实现功能,流对象用完后,一定要关闭资源
9. 字符输出流--写文本文件
Writer类,抽象的,找子类FileWriter 写入字符文件的便捷类
创建子类对象,需要使用子类的构造器,传递String文件名
子类对象调用父类方法write写文件
关闭资源
创建对象,调用方法写,write方法是把数据写在了内存中,flush刷新该流的缓冲,把数据从内存刷到目的文件.
字符流写文件必须刷新,如果不刷新数据在内存中,但是只要进行了刷新数据肯定走向目的文件
关闭流对象 close()关闭之前,先走刷新 close(){ flush()} 一旦流对象关闭,不能再次使用
10. FileWriter类的其他写入方式
追加写入,现在的内容需要进行后续的追加。利用FileWriter类的构造方法,传递true可以实现文件的追加写入
写单个的字符 write(int i)
写字符数组 write(char[] c)
写字符数组一部分write(char[] c,int start,int length)
11. 字符输入流读取文件
Reader类,抽象类,找子类FileReader读取字符文件的便捷类
创建子类对象,需要使用子类构造器,传递String文件名
在调用父类方法read读取文件
关闭资源
读取单个字符 int read() 每次读取1个字符,返回码值,read方法每执行一次,自动的向后读取一个字符,读取到文件末尾,返回-1
12. 读入字符数组
数组在读取过程中,起到了缓冲的作用,提高读取的效率
读取单个字符,在文档小的时候,速度没有什么影响,文档很大,读取单个字符串,速度就会慢许多
int read(字符数组) 数组的表现,返回值代表了什么
数组中,存储到是读取到的字符,返回值,每次读取后数组中存储的有效字符个数
到达文件末尾,返回-1
13. 文件的复制效果--带异常处理
把c盘下的文本文件,复制到d盘
读取和写入有两种方式,读取和写入单个字符,读取和写入字符数组
FileReader读取源文件,数据源
FileWriter写入目的文件,数据目的
14.