1、基本数据类型在内存中如何存放
了解基本数据类型看这里:java有哪8种基本数据类型
对于java中的8种基本数据类型,可以通过如下方式赋值给变量赋值。
int a = 3;
float b = 4.0f;
a = a + 2;
8中基本数据是将具体值直接存放在栈中,在发生变更时,将具体值替换为新的值。具体如下:
了解java如何管理内存看这里:jvm是如何管理内存的
了解java堆和栈的区别看这里:java堆和栈有什么区别
对于基本数据类型,并没有基本数据池的概念,每次赋值并不会在栈中进行任何查询,而是直接存储值。
但是,对于基本数据类型的包装器,在一定数值范围内是存放在运行时常量池中的。
了解基本类型包装器看这里:什么是基本类型包装器
了解运行时常量池看这里:运行时常量池是什么
顺便提一句,对于基本数据类型,在内存中都是以二进制储存(当然,内存是以8位二进制作为一个存储单元,也就是一个字节),不同的类型所占用的内存空间(体现为存储单元)也不同。在java中,数值类型都是有符号存储(二进制首位为符号位),浮点类型也是遵循IEEE754、854标准。
了解二进制表示整型看这里:[用二进制如何表示整型数值][7]
了解二进制表示浮点型看这里:[用二进制如何表示浮点型数值][8]
对于一些不靠谱的资料或博客会混淆这个概念,认为基本数据类型在存储时首先回去看看栈中是否有该值,如果没有则放入,如果有则指向。这种说法纯属瞎扯,一个简单的道理,如果我分配了2G的栈内存,是否每次简单的int a = 1的赋值时,难道都会去排查一下这2g的空间?java没有这些人想象的这么无聊。
时间: 2024-10-06 05:00:50