文章目录
包装类
什么是包装类
包装类就是将8大基本类型进行封装到类之中.
包装类的产生
因为Object类只能接受引用类型,为了让它能够接收java中的所有类型,我们引入了包装类.
基本类型在实际应用场景会产生误导.比如:int 的默认值为0,那如果我们要存的值就是0.
包装类的种类
包装类的使用
public class PackageClassTest {
public static void main(String[] args) {
//以整型为例
int val = 10;
//装箱
Integer i = new Integer(val);
//如果进行数学运算,就要进行拆箱
//拆箱
int a = i + 10;
System.out.println(a);
}
}
但是这样我们发现使用很麻烦.于是java提供了自动装箱和自动拆箱,这样使用包装类型和基本类型就一模一样了.
自动拆装箱
//自动装箱
Integer a = 10;
//自动拆箱
a = a + 10;
System.out.println(a);
异常
什么是异常
异常是程序没有按照预计的结果运行,发生了错误.
异常的语法
/**
* 异常的语法:
* try{
* 可能出现异常的代码
* }catch(异常类型 异常对象的引用){
* 异常出现以后如何进行处理
* }finally{
* 异常的出口,最终都会执行的代码
* }
*/
int[] data = new int[]{1,2,3};
try {
int val = data[10];
System.out.println("其他的异常代码块");
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("发生异常了~");
}finally {
System.out.println("出口");
}
出现异常之后,程序将不会再向下运行,而是交给catch来进行处理,catch执行完毕后,会继续向下运行.
异常的使用
int[] data = new int[]{1,2,3};
data = null;
//此时属于空指针异常,而我们捕获的是索引越界异常,catch无法进行处理
//需要多个catch,进行捕获.
try {
int val = data[10];
System.out.println("其他的异常代码块");
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("发生异常了~");
}catch (NullPointerException e){
System.out.println("发生空指针异常了~");
}
finally {
System.out.println("出口");
}
java中一切都是类,异常也是类,所以catch只能捕获相应的异常类型
Expection是所有异常类的父类,如果catch捕获的是Expection,那么catch就能接收所有的异常类型.一般在不明确异常类型的时候可以这样使用.
如果明确异常的类型,如控制正异常,数组索引越界异常,就要捕获明确的类型.
打印错误堆栈信息
try {
int val = data[10];
System.out.println("其他的异常代码块");
}
} catch (NullPointerException e) {
System.out.println("发生空指针异常了~");
//当发生异常的时候,就调用异常对象的printStackTrace方法打印错误的信息
e.printStackTrace();
}
finally代码块
finally代码块,表示无论异常是否产生,最终都会执行的代码
一般资源的释放,方法的关闭都在finally代码块中.
不能再finally代码块中写返回值,因为它会覆盖掉try或catch中的返回值.
public static void main(String[] args) {
int test = test();
System.out.println(test);
}
public static int test() {
int[] data = new int[]{1, 2, 3};
try {
int val = data[10];
return 10;
} catch (ArrayIndexOutOfBoundsException e) {
//当发生异常的时候,就调用异常对象的printStackTrace方法打印错误的信息
e.printStackTrace();
return 20;
} finally {
System.out.println("出口");
return 30;
}
}
异常处理流程
throw和throws关键字-人为抛出异常
throws
用在方法声明上,表示该方法可能会产生异常,但是本方法不处理异常,将异常抛给调用者去处理.
throw
用在方法内部,表示人为产生异常并抛出.
异常对象的产生都是异常发生后由JVM产生的,如果需要人为产生异常,就使用throw关键字.