java中的异常处理(装箱拆箱操作,包装器)

  1. 包装器

Java中的基本数据类型不是对象型(引用类型)。但是在程序中有时需要对对象而不是基本数据类 型进行操作。因此,java里提供了一种叫做包装类(wrapper),它能够把基本数据类型包装成对象类型

Java中的包装器类有两个主要的作用:

1.提供一种机制,将基本值“包装”到对象中,从而使基本值能够包含在为对象而保留的操作中, 或者从带对象返回值的方法中返回。

2.为基本值提供分类功能。这些功能大多数于各种转换有关:在基本值和String 对象间相互转 换,在基本值和String 对象之间按不同基数转换,如二进制、八进制和十六进制等。

基本数据类型及包装类型的对应关系 boolean Boolean byte Byte char Character double Double float Float int Integer long Long short Short

简单了解下概念 ,记住基本数据类型和对应包装类的转换就行了。 


    2.装箱拆箱

自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值自动地转换成对应的对象。自动装箱与 拆箱的机制可以让我们在Java的变量赋值,或者是方法调用等情况下使用原始类型,或者对象类型更加简单直接。 为了让代码简练,Java 1.5引入了 具有在原始类型和对象类型自动转换的装箱和拆箱机制。但是自动装箱和拆箱并非完美,在使用时需要 有一些注意事项,如果没有搞明白自动装箱和拆箱,可能会引起难以察觉的bug。

package cn.webrx;
public class MyVar1 {
public static void main(String[] args) {
int i = 30;
Integer n = 20;//自动装箱
Integer nn = Integer.valueOf("30");
System.out.println(n.intValue());
//拆箱操作
int t = nn;
int t2 = nn.intValue();
}
}

装箱直接声明包装类的变量就行了,拆箱就用对应的基本数据类型再转回来。实操中比如java泛型,集合中有些只能使用引用数据类型,就需要用到包装类 


 

异常概念:

异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导 致的。在Java等面向对象的编程语言中异常属于对象。

java异常处理:try catch finally throw thorws java.lang.Exception

异常(Exception)都是运行时的编译时产生的不是异常,而是错误(Error)。 最开始大家都将程序设计导致的错误(Error)不属于异常(Exception)。 但是一般都将Error作为异常的一种,所以异常一般分两类,Error与Exception。

异常处理:

 try{

有可能出错的代码

}catch(抛出异常){

 执行代码段

}finally{

System.out.println("最终要执行的");   //若加了finally,无论有没有错误,finally都一定会执行

}

记住这个格式,和常用的抛出异常类即可

异常类型        说明
Exception        异常层次结构的根类
RuntimeException       运行时的异常
ArithmameticException算术错误异常,如以0做除数
ArraylndexOutOfBoundException数组索引大于数组的长度
IllegalArgumentException接收到非法参数
ClassCastException类型转换异常
IOExceptionI/O异常的根类
NullPointerException空指针异常,访问对象成员为空

抛出异常:

import java.util.InputMismatchException;
import java.util.Scanner;
    public class Student {
        public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入一个数字\n");
// java.util.InputMismatchException
            int a = sc.nextInt();
            System.out.print("请再输入一个数字\n");
            int b = sc.nextInt();
// java.lang.ArithmeticException
            System.out.printf("%d / %d = %d \n", a, b, a / b);
        } catch (ArithmeticException e) {
            System.out.println("第二个数字不能输入0");
        } catch (InputMismatchException e) {
            System.out.println("输入有误,必须都输入数字");
        } catch (Exception e) {
            System.out.println("\n系统未知异常。");
        }finally {
            System.out.println("最终要执行的。");
        }

    }
    }

这里一共抛出三个运行时可能出现的错误,分别是算术运算错误,输入格式错误,和其他未知错误

测试结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值