发布时间:2024-06-30 11:01
前言:本文章主要讲解数组的内存图,更好地掌握数组以及数组调用流程,话不多说开讲。
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。
下面我开始介绍一下数组的调用流程 :
调用完成之后,栈和堆里的数据就会消失。
看懂了一个数组内存图,下面几个就会看懂啦。
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
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 如果不明白看下图
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
微信小程序:上传头像或图片使用we-cropper裁剪后并上传自己服务器
开源数据计算引擎,实现媲美ElasticSearch的高性能并发查询
【含源码】两种不同风格的圣诞树代码合集,其中还有可以改名字的圣诞树代码
黑马程序员3天带你玩转Python深度学习TensorFlow框架学习笔记
Qt 5.14.2 MinGW 7.3.0/MSVC2017_64编译Oracle驱动笔记
MySQL对JOIN做了那些不为人知的优化《死磕MySQL系列 十七》
用python-opencv实现简单的人脸检测(代码+理论知识)
【机器学习】 吴恩达机器学习作业 ex1 python实现+Matlab实现
若依 vue前端 动态设置路由path不同参数 在页面容器里打开新页面(新路由),面包屑和标签页标题根据参数动态改变,面包屑多级标题,侧边栏对应菜单亮起