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";

  基本数据类型与引用数据类型在内存中的存储如下图

java 引用数据类型存储 java引用数据类型有几种_整型


str1str2为“引用”,指向堆内存中对应值的内存地址