Java千百问_06数据结构(023)_基本数据类型在内存中如何存放

点击进入_更多_Java千百问

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

Java千百问_06数据结构(023)_基本数据类型在内存中如何存放的相关文章

Java千百问_06数据结构(022)_String在内存中如何存放

点击进入_更多_Java千百问 1.String在内存中如何存放 了解String是什么看这里:String是什么 String是一个特殊的包装类数据. 可以用两种的形式来创建: String str = new String( "abc" ); String str = "abc" ; 了解java如何管理内存看这里:jvm是如何管理内存的 了解java堆和栈的区别看这里:java堆和栈有什么区别 第一种是用new()来新建对象的,它会在存放于堆中,每调用一次就会

Java千百问_06数据结构(007)_String属于基本数据类型吗

点击进入_更多_Java千百问 1.String属于基本数据类型吗 首先要明确的是,在Java中,String不是基本数据类型,它继承于Object,是一个jdk提供的字符串类. 了解基本数据类型看这里:java有哪8种基本数据类型2 但是,String和其他对象相比,jdk做了很多特殊的处理.体现在如下几个方面: String可以通过new构造对象,也可以直接赋值.例如: String str = new String( "abc" );//第一种 String str = &quo

Java千百问_06数据结构(013)_数组如何传递

点击进入_更多_Java千百问 1.数组如何传递 在java中,我们可以将数组作为参数传递给方法,方式同传递基本类型参数一致. 了解什么是数组看这里:java中的数组是什么 了解循环数组便利看这里:如何遍历数组 例子: public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } 可以通过传递数组

Java千百问_06数据结构(016)_引用类型数组在内存中如何储存

点击进入_更多_Java千百问 1.存放基本类型数组在内存中如何储存 java的数组中可以存放引用类型. 存放引用类型的内存分布相比存放基本类型相对复杂.来看一段存储基本类型的程序: 了解什么是数组看这里:java中的数组是什么 了解数组在内存中的储存看这里:java数组如何存储在内存中 public class TestPrimitiveArray { public static void main(String[] args) { //1.定义数组 int[] numbers; //2.分配

Java千百问_06数据结构(017)_什么是二维数组

点击进入_更多_Java千百问 1.二维数组如何定义 Java语言中,多维数组被看作数组的数组. 了解一维数组看这里:java中的数组是什么 定义方式和一维数组类似,如下: type arrayName[ ][ ]: type [ ][ ]arrayName; 2.二维数组如何初始化 二维数组初始化和一维数组一样,分为静态初始化和动态初始化 静态初始化 Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同.初始化方式如下: int intAr

Java千百问_06数据结构(012)_如何遍历数组

点击进入_更多_Java千百问 1.如何遍历数组 我们在处理数组时,经常使用for循环或foreach循环进行遍历,因为数组中的所有元素类型相同并且数组的大小是已知的. 了解什么是数组看这里:java中的数组是什么 了解for循环看这里:java中如何循环执行 使用for循环遍历 public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; //

Java千百问_06数据结构(025)_用二进制如何表示浮点型数值

点击进入_更多_Java千百问 1.用二进制如何表示浮点型数值 我们再了解二进制如何表达浮点型数值前,需要先了解用二进制如何表示整型数值:用二进制如何表示整型数值 由于计算机只认识0.1二进制,所以与表示整数一样,浮点数值最终也都会被解释为二进制机器码,与整型不同的是,所有由计算机储存的浮点类型,都是通过运算转换为十进制的,所以都是高度近似值,并不可能100%精确.具体规则如下: 遵循Ieee754标准(IEEE二进位浮点数算术标准) 首位均是符号位,1代表负,0代表正. 3.除去首位,用来表示

Java千百问_06数据结构(024)_用二进制如何表示整型数值

点击进入_更多_Java千百问 1.用二进制如何表示整型数值 我们都知道,计算机只认识0.1二进制,我们一般操作的寄存器和存储单元也都只认识二进制,我们称一个二进制为一个bit(位),一般32位计算机的寄存器允许操作32bit的数据,即32个0或1,由于书写过长,我们一般使用十六进制表示(每两个十六进制成为一个byte字节,即8bit=1byte).例如: 1111 1111 1111 1111 1111 1111 1111 1111 = ffffffff 了解32位和64位计算机看这里:32位

Java千百问_06数据结构(015)_数组和普通对象的引用变量有什么区别

点击进入_更多_Java千百问 1.数组和普通对象的引用变量有什么区别 了解什么是数组看这里:java中的数组是什么 对于java的数组来说,只有类型兼容(即属于同一数据类型体系且遵守优先级由低到高原则),才能将数组引用传递给另一数组引用,但仍然不能改变数组长度(仅仅只是调整数组引用指针的指向). 了解数组传递看这里:数组如何传递 public class TestArrayLength { public static void main(String[] args) { int[] numbe