基本数据类型
8种:float, int, boolean, short, char, byte, double, long
存储位置:基本类型存储在栈中
包装类型
8种:Float, Integer, Boolean, Short Character, Byte, Double, Long
存储位置:作为对象在堆上创建和存储, 通过引用来使用
比较
- 从参数传递上来说,基本类型只能按值传递,而每个封装类都是按引用传递的;
- 从存储的位置上来说,基本类型是存储在栈中的,而所有的对象都是在堆上创建和存储的,所以基本类型的存取速度要快于在堆中的封装类型的实例对象;
- 基本类型的优势是:速度快(不涉及到对象的构造和回收),数据存储相对简单,运算效率比较高;
- 封装类型的优势是:更好的处理数据之间的转换,方法很多,用起来也方便,类型转换的api更好用了,比如Integer.parseInt(*)等的,每个封装类型都提供了parseXXX方法和toString方法。而且在集合当中,也只能使用封装类型。封装类型满足了Java中一切皆对象的原则。
为什么需要封装类型/基本类型
- Java作为面对对象语言,基本数据类型其实破坏了面对对象的特性。但是直接存放在栈等优点使它占用空间少,更简单,更灵活,更高效
- 封装类型值可为null,实际中存在需要使用null的场景。基础类型因直接存储在栈中要有默认值。(包装类型可让引用为空(null))
- 兼容集合类等容器使用需要