# 类型
# 基本类型与运算
Java的基本数据类型包括byte
、int
、char
、long
、float
、double
、boolean
、short
。
所以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去销毁 |
# 自动装箱与拆箱
- 装箱:将基本类型用它们对应的引用类型包装起来;
- 拆箱:将包装类型转换为基本数据类型;