Java中的int和Integer的区别

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]);

得到的结果是:

0
null

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

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

我们看代码来理解下第二种情况:
Student.java
public class Student {
    String name;
    int age;
}

StudentBiz.java
public 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,以及上面代码中的自定义类
这些都是引用数据类型,所以特别要避免这样的错误发生)。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值