有了基本数据类型,为什么还要引用类型?(本人学习总结)
Java有八大基本数据类型(byte,short,int,long,float,double,char,boolean)
然而Java还提供另一种数据类型:引用类型即封装类型(Byte,Short,Integer,Long,Float,Double,Character,Boolean)
比如Integer为int的封装类,所以Interger不是基本数据类型而是类。
那为什么还要引用类型?
- 它封装了数据和处理该数据的方法,比如Integer.parseInt(String)就是将String字符类型数据转换为Integer整型数据。
- Java中大部分类和方法都是针对类类型对象的,比如ArrayList集合类就只能以类作为它的存储对象,如果要储存int型数据就要将其包装成一个类即Integer,然后才能存入list。
- 引用类型在堆里,基本类型在栈里。
栈空间小且连续,往往会被放在缓存。引用类型cache miss(缓存未命中)率高且要多一次解引用。对象还要再多储存一个对象头,对基本数据类型来说空间浪费率太高
逻辑上来讲,java只有包装类就够了,为了运行速度,需要用到基本数据类型。实际上,任何一门语言设计之初,都会优先考虑运行效率的问题,所以二者同时存在是合乎情理的。