接口
interface 接口
特性:
- 接口不能被实例化;
- 实现类必须实现接口的所有方法;
- 实现类可以实现多个接口;
- 接口没有构造方法。
- implements Axxx,Bxxx多个接口使用,隔开
- 接口中的变量都是静态常量。
- 接口的成员变量默认修饰符为:public static final 。接口中的变量都是常量。
- 接口中的方法都是抽象方法,默认修饰符为:public abstract。
- 接口是给类实现用的,非抽象类事项一个接口的时候,必须要把接口中的方法全部实现。
接口是一种能力。一种服务,一种功能。 添加功能好用。
异常
变量名.hasNextInt();
判断输入是否为整数。
System.exit(1); // 非0异常关闭 0正常关闭
结束JVM虚拟机。
System.err.println() // 红色输出,用于报错
异常处理机制
异常
是指程序运行中发生不正常的事件,JVM会中断正在运行的程序。
Java异常处理的5个关键字:try,catch,finally,throw,throws
捕获异常:
try执行可能产生异常的代码;
catch捕获异常;
finally无论是否发生异常,代码总能执行;
声明异常:
throws声明方法可能要抛出的各种异常;
抛出异常:
throw手动抛出异常;
Java中所有的异常都是Exception(父类)
除数为0的异常, ArithmeticException(子类)
输入的格式不正确, InputMismathException(子类)
try {
int num1 = input.nextInt();
System.out.println("请输入除数:");
int num2 = input.nextInt();
System.out.println(num1+ "/" +num2 +"="+ (num1/num2));
}catch(Exception e) { // 全异常抓捕
System.err.println("出现了错误操作!");
e.printStackTrace();// 打印异常堆栈信息
e.getMessage(); // 打印异常的字符串提示
}
catch(这里可以写Exception 或者Exception的子类)
try-catch代码执行流程:
- 无异常。try-》catch后面的代码
- 有异常。而且恰好和catch后面的异常类型匹配:try–》catch里面的代码–》catch后面的代码
- 有异常。但是和catch后面的异常类型不匹配:try–》中断
查错从下往上,找错从上往下。
try-catch-finally
finally唯一不执行的情况 System.exit(1);
try或catch代码块中加return;finally代码块中的语句还会执行。
多重catch块
两个块可以出现多个同名变量。
- 先子类后父类;
- 发生异常时顺序逐个匹配
- 只执行第一个与异常类型匹配的catch语句
try必须出现catch和finally两者至少出现一个。
声明异常
throw声明某个方法可能抛出的各种异常,多个异常用逗号隔开.
Exception是一个类;
throw与throws:
throw | throws |
---|---|
生成并抛出异常 | 声明方法内跑出了异常 |
位于方法体内部,可作为单独语句使用 | 必须跟在方法参数列表后面,不能单独使用 |
抛出一个一场对象,且只能是一个 | 声明抛出异常类型,可以跟多个 |
异常体系结构
Object-throwable-error,Exception-检查异常,运行时异常
自定义异常
异常更具体,更有针对性
异常链 JDK1.4版本出现。
异常处理原则
异常处理与性能
异常只能用于非正常情况
不要将过于庞大的代码块放在try中
在catch中指定具体的异常类型
需要对捕获的异常做处理