您的位置:首页 > 编程语言 > Java开发

Java中的int和Integer的区别

2017-01-08 01:46 267 查看
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,以及上面代码中的自定义类
这些都是引用数据类型,所以特别要避免这样的错误发生)。


第二个区别是大家需要多注意的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: