# 类型

# 基本类型与运算

Java的基本数据类型包括byteintcharlongfloatdoublebooleanshort

所以String不是基本数据类型,void也不是基本数据类型。

数据类型 大小 包装类
byte 8 Byte
short 16 Double
int 32 Integer
long 64 Long
float 32 Float
double 64 Double
char 16 Character
boolean 1 Boolean

# 引用类型

引用类型是指向一个对象,不是原始值,指向对象的变量是引用变量。

在Java中,除了基本数据类型之外都是引用数据类型,包括自己定义的class类也是引用类型。

常见的引用类型有:String | StringBuffer | StringBuilder | ArrayList | HashSet | HashMap等。

引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用变量。

在java里面除去基本数据类型的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样使用。

引用类型常见的有:String,StringBuffer,ArrayList,HashSet,HashMap等。String也属于引用数据类型。

# 两种类型的对比

基本数据类型 引用数据类型
在栈中分配内存 在堆中分配内存,堆的读写速度远不及栈
变量名指向具体的数值 变量名指向存数据对象的内存地址,即变量名指向的是hash值
基本数据类型之间的赋值是创建新的拷贝 对象之间的赋值只是传递引用
==!=是在比较值 ==!=是在比较两个引用是否相同,需要自己实现equals()方法
基本类型变量创建和销毁很快 类对象需要创建JVM去销毁

# 自动装箱与拆箱

  • 装箱:将基本类型用它们对应的引用类型包装起来;
  • 拆箱:将包装类型转换为基本数据类型;