引用类型和对象与基本类型和基本值有本质的区别。
- 八种基本类型由 Java 语言定义,程序员不能定义新基本类型。引用类型由用户定义,因此有无限多个。例如,程序可以定义一个名为 Point 的类,然后使用这个新定义类型的对象存储和处理笛卡儿坐标系中的 (x, y) 点。
- 基本类型表示单个值。引用类型是聚合类型(aggregate type),可以保存零个或多个基本值或对象。例如,我们假设的 Point 类可能存储了两个 double 类型的值,表示点的 x 和 y 坐标。char[] 和 Point[] 数组类型是聚合类型,因为它们保存一些 char 类型的基本值或 Point 对象。
- 基本类型需要一到八个字节的内存空间。把基本值存储到变量中,或者传入方法时,计算机会复制表示这个值的字节。而对象基本上需要更多的内存。创建对象时会在堆(heap)中动态分配内存,存储这个对象;如果不再需要使用这个对象了,存储它的内存会被自动垃圾回收。