数组相关知识
Posted TTTTTTTAO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组相关知识相关的知识,希望对你有一定的参考价值。
数组的介绍:
数组指的是一种容器,他可以用来存储同种数组的多个值
数组静态初始化
在内存中为数组容器开辟空间,并存储到容器的过程
格式一: 数据类型[] 数组名 int[] array 格式二: 数据类型 数组名[] int array[] int[] array1; // 这是数组类型的变量,没开辟容器 完整格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...} //数值内容数据类型必须完全一致 简化格式: 数据类型[] 数组名 = {11,12,33} System.out.println(arr1)//[d@776ec8df 数组的内存地址--16进制 [--->当前空间是一个数组类型 d --->空间存储的数据类型 @:分隔符 776ec8df---->十六进制的
数组的元素访问
访问格式: 数组名[索引] 索引(角标,下标):索引是数组容器中空间的编号,编号从0开始,逐个+1增长 数组每一个值都称为元素(存在隐式转换) double[]dArr = {11,22.2,33.3,44.4,55.5} //将33.3取出 System.out.println(dArr[2]) //修改55.5改成66.6 dArr[4]=66.6;
遍历数组操作
数组的通用遍历方式 for(int i = 0 ; i < 5 ; i++){ //i:代表索引 System.out.println(arr[i]); }
数组的遍历:快捷键 arr.fori
什么时候对数组进行遍历操作??
-如果要实现的需求,是对数组的[每一个]元素进行操作,就需要对数组进行遍历
数组动态初始化
初始化时,至指定数组的长度,由系统为数组分配初初始值 格式: 数据类型[] 数组名 = new 数据类型[长度] 默认初始化值: 小数类型:0.0
布尔类型:false
字符类型:\'\\u0000\' ---->空白字符 ----> Unicode字符 ASCII码表
引用数据类型:null(空)
引用数据类型:类,接口,数组。
引用了(记录了)一份地址的变量,该变量所对应的数据类型就是引用数据类型。
iArr = [d@776ec8df
整数类型:0
数组初始化区别
-
动态手动指定数组长度,由系统
-
只明确要存储的元素是个数,但不明确具体数值
-
-
静态
-
如果要 操作的数据,在需求中已经明确给出了
-
数组内存图
-
栈
-
方法运行是进入的内存
-
-
堆
-
new出来的东西都会在堆内存开辟空间
-
-
方法区
-
字节码文件(.class)加载时所进入的内存
-
两个数组指向相同的内存图
① .class 和main方法进入方法区
② main方法进入栈内存,开辟新空间,首先会按顺序执行,执行int[ ] array1 = {11,22,33};这里其实是数组的简写,在执行的时候,数组简写也会按照完整版 int[] array1 = new int [ ] {11,22,33};执行, 看到new,说明要进入堆内存开辟空间
③ 进入堆内存后,首先会在堆内存中开辟一个数组的空间,将array1数组的元素存储到这个空间中,存储好了之后,他会形成一个这个空间的地址,方便查询
④然后这个地址会赋值给array1这个数组,如果我们打印该数组的话,他会打印一次地址值
⑤执行完array1之后,顺序执行int { } array2 = array1; 因为array1存放的是地址值,array1直接赋值的话会传给array2地址值,这样array2这个数组他的地址值和array1的地址值相同,这样他们在堆内存的空间也是同一个。
⑥这样他们打印0号索引位置的元素,都会是100
数组常见的问题
ArrayIndexOutOfBoundsException 当访问量数组中不存在的索引,会引发索引越界异常
当引用数组类型变量被赋值为 null 之后,地址的指向被切断,还继续访问堆内存数据,就会引发空指针异常
二维数组
二维数组也是一种容器,而他存储的是一堆数组(属于数组的嵌套)
二维数组的静态初始化
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2},{元素3,元素4}}; 数据类型[][] 数组名 = {{元素1,元素2},{元素3,元素4}}; //元素访问 system.out.println(arr[][]);
二维数组的元素访问
system.out.println(arr);//看到二维数值的地址值 system.out.println(arr[0]);//看到一维数值的地址值
二维数组的遍历操作
int[][] arr = { {11,22,33}, {21,33,45} }; for(int i = 0 ; i <arr.length; i++){ for(int j = 0; j <arr[i].length; j++){ system.out.println(arr[i][j]); } }
二维数组的动态初始化
格式:
数据类型[][] 数组名 = new 数据类型[m][n]
m:可以存储多个一维数组
n:每一个一维数组可以存储多少个元素
int[][] arr = new int[2][3]
这个二维数组可以存储两个一维数组,每个一维数组三个元素
以上是关于数组相关知识的主要内容,如果未能解决你的问题,请参考以下文章
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”