Java中的int和Integer的区别

来源:互联网 发布:windows store下载慢 编辑:程序博客网 时间:2024/06/02 21:31
Java中数据类型可以分基本数据类型和引用数据类型。

而int是基本数据类型,Integer是引用数据类型,也称Integer是int的分装类。八种基本数据类型都有其对应的封装类: byte(Byte), short(Short) , int(Integer),long(Long),boolean(Boolean) ,char(Character),float(Float),
double(Double)

下面我们看下代码:

    int[] a=new int[5];         Integer[] b=new Integer[5];                          System.out.println(a[0]);           System.out.println(b[0]);得到的结果是:0null

从上面的代码可以得出的结论,int类型默认的值是0,而Interger默认的值是null。
他们默认的值我们从一个例子中去理解,可以理解为两个学生考试成绩的表达情况,一个学生没有考试他的成绩可以理解为Integer的默认值。另外一个学生考试得0分他的成绩表达的方式就可以理解为int类型的默认值。所以这两种情况是完全不一样的。

区别:
1. 初始化:int i=1; Integer i=new Integer(1); 也就是基本数据类型而引用类型初始化的差异。
2. Integer类型用在数组中容易导致Java.lang.NullPointerException的情况。空指针异常发生的原因是对象是空的,我们却调用他的属性和方法,就会导致空指针异常。

我们看代码来理解下第二种情况:Student.javapublic class Student {    String name;    int age;}StudentBiz.javapublic class StudentBiz {       public void biz(){        Student[] student=new Student[1];        //student[0]=new String();         //创建对象,将对象赋值给数组元素        System.out.println(students[0].name);           }       public static void main(String[] args) {        new StudentBiz().biz();         }}运行得到的就会是:Exception in thread "main" java.lang.NullPointerException...    上面的代码是将Student类的对象来做数组的元素,但是我们的代码没有创建对象。可能读者会误认为出现异常是因为我的数组元素没有赋值,其实不是。原因就是因为创建对象。    出现的这样的异常情况(只要是引用类型作为数组的元素,都必须要创建对象,将对象作为数组的元素,比如:Integer,String,以及上面代码中的自定义类这些都是引用数据类型,所以特别要避免这样的错误发生)。

第二个区别是大家需要多注意的地方。

0 0
原创粉丝点击