说到java语言的数据类型,我们都知道包括基本数据类型和对象类型,而且java是一门面向对象的语言,对象类型可以理解,基本数据类型会使得java的面向对象不是那么纯粹,那么为什么java还要保留基本数据类型呢?
先看基本类型和对象类型的一些区别:
区别
基本类型是基于值,对象类型是基于引用
1 | int i1 = 100; |
第一句是使用基本类型int,第二句使用int的包装类Integer,第三句使用了jdk5自动装箱的特性(简化了包装类的使用,减少编码量,但是底层的语义没有改变,对运行时也没有任何影响)。
i1直接持有一个整数的值,但是i2持有的是一个Integer对象的引用!
说到自动装箱有一点需要注意:1
2Integer i1 = null;
int i2 = i1;
基于自动装箱的特性,上面的代码并不会有编译错误,但是运行的时候你会发现会抛出NullPointerException
,因为i1指向的是null,在自动拆箱的时候就会出现错误。