九种基本数据类型的大小,以及他们的封装类

时间:2021-05-30 15:47:43

java提供的九种基本数据类型:booleanbytecharshortintlongfloatdoublevoid
以及它们的封装类:BooleanByteCharacterShortIntegerLongFloatDoubleVoid


在java中使用面向过程的基本类型来存储基本数据,主要是从性能方面考虑,使用对象来处理必然会引起一些不必要的开销。
然而java中,泛型类包括预定义的集合,使用的参数都是对象类型,就无法使用基本数据类型,所以java提供了这些基本类型的包装器。


对基本数据类型封装之后,封装类可以有属性和方法,就可以利用这些属性和方法来处理数据,eg:Integer对象有parseInt(String str),就是将字符串转换为int类型。
并且有些类型的数据有默认值,而基本数据类型跟封装类(引用类型)的默认值是不一样的,eg:int i,i的默认值是0;但是Integer j,j的默认值是null,因为封装类产生的是对象,对象默认值是null。一旦java看到null,就知道这个引用还没有指向某个对象,在任何引用使用之前,都必须为其指定一个对象,否则报错。


基本数据类型及其封装类的区别:

  1. 基本数据类型只能按值传递;封装类按引用传递。
  2. 基本数据类型在堆栈中创建,直接存储值;而对象类型,对象在堆中创建,对象的引用在堆栈中创建。
  3. 基本类型由于在堆栈中,效率高,但可能发生内存泄漏。
  4. 基本数据类型在声明时系统自动为其分配空间,而引用类型声明时只是分配了引用空间,必须通过实例化开辟数据空间后才能赋值。
  5. 基本数据类型跟封装类(引用类型)的默认值是不一样的,int是基本数据类型,Integer是int的封装类,是引用类型。int默认值是0,而Integer默认值是null,所以Integer能区分出0和null的情况。

注:数组对象也是一个引用对象,将一个数组赋值给另一个数组时只是复制了一个引用,所以通过某一个数组所做的修改另一个数组中也看得见。