java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java数组内存

Java基础知识精通数组的内存分析

作者:猿界的小皮皮

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素

前言:本文章主要讲解数组的内存图,更好地掌握数组以及数组调用流程,话不多说开讲。

1.数组内存图

1.一个数组的内存图

int[] arr = new int[3]; 		//刚开始定义数组arr为int型包含三位数字,初始化为0,0,0.
arr[0] = 12;  					//数组arr第一位被赋值12
arr[2] = 14;  					//数组arr第三位被赋值14
System.out.println(arr[0]);  	//12
System.out.println(arr[1]);  	//0
System.out.println(arr[2]);		//14
System.out.println(arr);		//[I@7852e922

解释

如下图:栈相当于存放数组变量的地址,堆相当于存放数组里面的元素而他们的下标就相当于房间号。

在这里我临时定义arr的地址是0x001等同于[I@7852e922。

下面我开始介绍一下数组的调用流程 :

调用完成之后,栈和堆里的数据就会消失。

看懂了一个数组内存图,下面几个就会看懂啦。

2.两个数组的内存图

int[] arr1 = new int[]{23,12,5}; //一开始就初始化为23、12、5。
System.out.println(arr1[0]); //23
System.out.println(arr1[1]); //12
System.out.println(arr1[2]); //5
System.out.println(arr1);    //0x001
arr1[0] = 13;  //把13赋值给arr1第一位。
System.out.println(arr1[0]);  //13
int[] arr2 = {14,18,15};    //与上面同理
System.out.println(arr2[0]); //14
System.out.println(arr2[1]); //18
System.out.println(arr2[2]); //15
System.out.println(arr2);    //0x002
arr2[1] = 12;   //赋值给arr2第二位为12
System.out.println(arr2[1]); //12

3.一个变量两个数组容器的内存图

int[] arr = new int[3];		//定义一个int型的arr数组,包含三个元素初始化为0。
System.out.println(arr[0]);  // 0
arr[0] = 3;					 
System.out.println(arr[0]);	 //3
System.out.println(arr);     //0x001
arr = new int[5];         	//重新赋值int型的arr数组,包含5个元素初始化为0,并且数组地址也相应改变。
System.out.println(arr[0]); // 0
arr[0] = 5;
System.out.println(arr[0]); // 5
System.out.println(arr);    //0x002     如果不明白看下图

4.两个变量指向一个数组容器的内存图

int[] arr1 = new int[3];		//定义一个int型的arr数组,包含三个元素初始化为0。
System.out.println(arr1[0]);	//0
arr1[0] = 12;
System.out.println(arr1[0]);	//12
System.out.println(arr1);		//0x001
int[] arr2 = arr1;				//把arr1变量赋值给arr2
System.out.println(arr2[0]);	//12
arr2[0] = 13;
System.out.println(arr2[0]);	//13
System.out.println(arr2);		//0x001
System.out.println(arr1[0]);	//13

您可能感兴趣的文章:
阅读全文