Day16
----------------------------------------------------------------------------------
今天内容:
(1)Map集合
(2)异常机制
(3)File类
1.Map集合(重点)
1.1 基本概念
java.util.Map<K,V>接口主要指用于存放基本单位为单对元素的容器,具体类型参数如下:
K - 此映射所维护的键(Key)的类型
V - 映射值(Value)的类型
该集合中不能包含重复的键,每个键最多只能映射一个值。
该集合的主要实现类有:HashMap类 和 TreeMap类。
1.2 常用的方法
V put(K key, V value) - 用于将参数指定的key和value组成一对放入集合中。
- 若实现增加的功能则返回null;若实现修改的功能则返回key原来对应的value。
boolean containsKey(Object key) - 用于判断当前集合是否包含参数指定的key。
boolean containsValue(Object value) - 用于判断当前集合是否包含参数指定的value。
V get(Object key) - 根据参数指定的key来返回对应value,若key不存在则返回null。
V remove(Object key) - 根据参数指定的key来删除元素,返回key对应的value。
Set<Map.Entry<K,V>> entrySet() - 用于将Map集合转换为Set集合。
其中Entry<K,V>为Map接口的内部接口,该接口类型变量用于描述一组键值对,常用方法如下
K getKey() - 用于获取当前键值对中的key并返回。
V getValue() - 用于获取当前键值对中的value并返回。
Set<K> keySet() - 用于将Map集合中的所有Key转换为Set集合。
2.异常机制(重点、简单)
2.1 基本概念
异常就是"不正常"的含义,在Java语言中主要指运行阶段产生的错误。
java.lang.Throwable类是Java语言中所有异常(Exception)和错误(Error)的超类。
其中Exception类主要描述比较轻微的错误,通常可以编码解决,如:0作为除数。
其中Error类主要描述比较严重的错误,通常无法编码解决,如:Java虚拟机挂了。
2.2 基本分类
java.lang.Exception类是所有异常的超类,常见的子类分为以下两种:
RuntimeException类 - 运行时异常,也叫作非检测性异常。
IOException和其它异常类 - 其它异常,也叫作检测性异常。
- 所谓检测性异常就是指在编译阶段可以被编译器检查出来的异常。
RuntimeException类的主要子类:
ArithmeticException - 算术异常
ArrayIndexOutOfBoundsException - 数组下标越界异常
NullPointerException - 空指针异常
ClassCastException - 类型转换异常
NumberFormatException - 数字格式异常
注意:
当程序中发生异常又没有手动处理时,则Java虚拟机采用默认方式处理,而默认处理方式就是打印异常的名称、异常的原因以及异常发生的位置,然后终止程序不再向下执行。
2.3 避免异常的发生
可以使用if()条件判断来避免异常的发生。
2.4 异常的捕获
(1)语法格式
try{
编写所有可能发生异常的语句块;
}
catch(异常类型 变量名){
编写针对该类型异常的处理语句块;
}
...
finally{
编写无论是否发生异常都应该执行的语句块;
}
(2)注意事项
a.当try{}中代码可能发生多种异常时,则需要编写多个catch分支,切记小类型异常放上面
b.以后课堂上可以采用懒人的写法:
catch(Exception e){ .... }
c.finally{}中主要用于编写进行善后处理的语句块,如:关闭已经打开的文件等等。
(3)执行流程
try{
a;
b; - 可能发生异常的语句;
c;
}catch(Exception ex){
d;
}finally{
e;
}
当上述代码没有发生异常时的执行流程为:a b c e;
当上述代码发生异常时的执行流程:a b d e;
2.5 异常的抛出
(1)基本概念
当程序的执行过程中产生异常后不便于或者无法处理时,则可以将异常转移给该方法的调用者,这个过程就叫异常的抛出。
(2)语法格式
访问控制符 返回值类型 方法名称(形参列表) throws 异常类型1,异常类型2,..{}
如:
public void show() throws Exception(){}
(3)方法重写的原则
a.要求方法名、参数列表以及返回值类型相同,从jdk1.5开始允许返回子类。
b.要求访问权限不能变小,可以相同或者变大。
c.要求不能抛出更大的异常。
注意:
子类中重写的方法可以选择抛出一样的异常、更小的异常以及不抛出异常,但是不可以抛出更大的异常或平级但不一样的异常。
2.6 自定义异常
(1)基本概念
虽然Java官方提供的异常类很多,但没有针对年龄不合理的异常类型,此时就需要程序员自定义一个异常类加以描述。
(2)基本流程
a.自定义xxxException类继承Exception类或者其子类。
b.在自定义类中提供两个版本的构造方法,分别是无参构造和字符串作参数的构造。
(3)异常的产生
throw new 异常类型(实参);
如:
throw new AgeException("年龄不合理");
3.File类(重点)
3.1 基本概念
java.io.File类用于描述文件和目录的名称和路径信息,可以获取文件的属性,如:大小等
3.2 常用的方法
File(String pathname) - 根据参数指定的路径名来构造对象。
boolean exists() - 用于判断文件或目录是否存在。
String getName() - 用于获取文件或目录的名称。
long length() - 用于获取文件的长度/大小。
long lastModified() - 用于获取文件的最后一次修改时间。
- 与java.util.Date类搭配使用。
String getAbsolutePath() - 用于获取绝对路径信息。
绝对路径 - 主要指以根目录开始的路径信息,如:c:/.. d:/... /...
相对路径 - 主要指以当前目录开始的路径信息,如:./code
- 其中.代表当前目录 ..代表当前目录的上一级目录。
- 以后的开发中推荐使用相对路径。
boolean delete() - 用于删除文件或目录。
boolean createNewFile() - 用于创建新的空文件。
boolean mkdir() - 用于创建单层目录。
boolean mkdirs() - 用于创建多层目录。
File[] listFiles() - 用于获取当前目录下的所有内容。
boolean isFile() - 判断是否为标准文件。
boolean isDirectory() - 判断是否为目录文件。
作业:
1.复习所学内容准备周考。
2.实现TestFile.java文件中成员方法的编写。
3.在学生信息管理系统中增加学生信息的学号异常类和年龄异常类。