Java中基本数据类型与引用数据类型
一、基本数据类型
Java中有八种基本数据类型,可以分为四类:
- 整型:
类型 | 字节 | 整型长度 | 默认值 | 取值范围 |
byte | 1字节 | / | 0 | -128~127 |
short | 2字节 | 短整型 | 0 | -32768~32767 |
int | 4字节 | 整型 | 0 | -2147483648(-231)~2147483647(231-1) |
long | 8字节 | 长整型 | 0 | -263~263-1 |
- 浮点型:
类型 | 字节 | 精度 | 默认值 | 取值范围 |
float | 4字节 | 单精度 | 0.0 | 1.4E-45~3.4028235E38 |
double | 8字节 | 双精度 | 0.0 | 4.9E-324~1.7976931348623157E308 |
- 字符型:
类型 | 字节 | / | 默认值 | 取值范围 |
char | 2字节 | 存储单个字符 | \u0000 | 0~65535 |
- 布尔型:
类型 | 默认值 | 取值 |
Boolean | false | true/false |
二、引用数据类型
引用数据类型指的是类、接口、数组等自己作为一种数据类型,由它们声明的对象的数据类型为引用数据类型,引用数据类型有很多,概括来说,除基本数据类型之外的都是引用数据类型。我们常用的String是一个类,所以String属于引用数据类型。
三、基本数据类型与引用数据类型
那么基本数据类型与引用数据类型有什么区别呢, 我觉得最大的区别就是在内存中的存储不同。
- 基本数据类型
所有的基本数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面。 - 引用数据类型
引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。
如下代码声明的数据
int i = 100;
double d = 3.14;
String str1 ="hello";
String str2 ="wkk";
基本数据类型与引用数据类型在内存中的存储如下图
str1
和str2
为“引用”,指向堆内存中对应值的内存地址