什么是包装类?什么又是异常?

包装类

什么是包装类

包装类就是将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关键字.
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值