java是面向对象的语言为什么还要有基本类型,只有包装类型完全面向对象不行吗?
java语言可以只有基本类型吗,为什么还有要包装类型?
java中的基本类型和包装类型:
基本类型 | 包装器类型 |
boolean | Boolean |
char | Character |
int | Integer |
byte | Byte |
short | Short |
long | Long |
float | Float |
double | Double |
基本类型和包装类型的区别:
定义方式不同:基本类型直接定义,包装类型需要new
存放位置不同:包装类型存储在堆中通过引用使用,基本类型存储在虚拟机栈中(所以int a ,Point p 都是存储在虚拟机栈中的)
初始值不同:基本类型初始值可能为0,false,0.0等,包装类型一般为null
使用场景不同:包装类型一般用在集合中,基本类型直接使用就行。
只使用基本类型或者包装类型可以吗?
单从java语言来说只是用包装类型可以,但是只有基本类型就会有点问题(集合),基本类型可以实现大部分操作,但是基本类型不具备类的特性,包装类型是对基本类型的封装,两者之间可以相互转化,丰富了基本类型的操作。
既然只使用包装类型可以,为什么还要有基本类型?
基本类型存储在虚拟机栈中,不像java中的类存储在堆中需要通过引用才能使用,可以发现基本类型使用效率更高,更节省内存,而变成工程中基本类型的使用大量且频繁,所以使用基本类型可以节省大量资源,提高效率。