-
包装器
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 | 类型转换异常 |
IOException | I/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("最终要执行的。");
}
}
}
这里一共抛出三个运行时可能出现的错误,分别是算术运算错误,输入格式错误,和其他未知错误
测试结果