一维数组和二维数组的使用
作者:互联网
数组
一维静态数组的格式是
完整格式:
数据类型 [] 数组名 = new 数据类型[]{元素};
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3..};
int[] arr = new int[]{11,22,33};
元素是数组内数据的一种的专业称呼!!!
简化格式:
数据类型 [] 数组名 = {元素}
数据类型 [] 数组名 = {元素1,元素2,元素3..};
int[] arr = {11,22,33};
一维动态数组的格式是
数组的动态初始化
- 介绍 : 在初始化的时候, 只需要指定长度, 系统就会分配默认值 (初始值)
- 格式 : 数据类型[] 数组名 = new 数据类型[长度];
当动态数组没有赋值的时候,各个数据类型的默认值是:整数 : 0 小数 : 0.0 布尔 : false 字符 : '\u0000' -- Unicode字符 -- 常见的体现是空白字符 引用数据类型: null
-
07-两种初始化的对比
-
区别 :
-
动态初始化 : 手动指定长度, 系统分配默认值
-
静态初始化 : 手动指定元素, 系统计算出数组长度
-
-
使用选择 :
静态初始化 : 如果要操作的数据, 需求中已经明确告知了, 直接静态初始化
动态初始化 : 只明确元素个数, 不明确具体数值的情况 -
数组.lengsh=数组的的长度(一般是在遍历数组中使用,就是需要用到每一个数组的个数时使用,就比如循环是使用)
数组索引:就可以理解为下标或者所索引 ,就像这组数 {1, 2,3 , 4 , 5, 6}
他的索引是从0开始的 0 1 2 3 4 5
-
索引 (角标, 下标) : 数组容器中, 每一个空间所对应的编号, 编号从 0 开始, 逐个 + 1增长
04-数组的元素访问
-
格式 : 数组名[索引];
-
索引 (角标, 下标) : 数组容器中, 每一个空间所对应的编号, 编号从 0 开始, 逐个 + 1增长
-
重点理解 : 这种访问格式, 是拿到了真实的数据
package com.itheima.array1;
public class ArrayDemo3 {
/*
数组的元素访问:
格式 : 数组名[索引];
索引(角标, 下标) : 数组容器中空间所对应的编号, 编号从0开始, 逐个+1增长
*/
public static void main(String[] args) {
int[] arr = {11, 22, 33, 44, 55};
// 取出数组中 22 元素并打印
System.out.println(arr[1]);
// 判断数组中第一个元素, 是奇数还是偶数
if (arr[0] % 2 == 0) {
System.out.println(arr[0] + "是一个偶数");
} else {
System.out.println(arr[0] + "是一个奇数");qu
}
// 修改数组中第三个元素, 为66
arr[2] = 66;
System.out.println(arr[2]);
// 根据数组中第四个元素, 决定在控制台打印多少次HelloWorld
for (int i = 1; i <= arr[3]; i++) {
System.out.println("HelloWorld");
}
}
} -
09-数组的常见问题
-
ArrayIndexOutOfBoundsException : 数组索引越界异常
-
原因 : 访问了不存在的索引
-
-
NullPointerException : 空指针异常
-
原因 : 当引用数据类型变量, 记录到null之后, 代表跟堆内存的连接被切断了
这时候还要访问堆内存数据, 就会出现空指针异常
int[] arr = {11,22,33};
arr = null;
System.out.println(arr[0]);
-
10-二维数组介绍
-
介绍 : 二维数组也是一种容器, 内部存储的都是一维数组
-
简单理解 : 容器的嵌套
-
可以理解为套娃
-
-
使用场景 :
-
发现手里有多个数组, 多个数组属于一个整体, 那就找个更大的容器, 装起来
-
11-二维数组静态初始化
-
完整格式
数据类型[][] 数组名 = new 数据类型[][]{{一维数组1},{一维数组2}}
};
int[][] arr = new int[][] {{11,22,33},{44,55,66}}
};
-
简化格式
数据类型[][] 数组名 = {{一维数组1},}一维数组2}}
};
int[][] arr = {{11,22,33},{44,55,66}}
};
二维数组存储一维数组的时候, 具体存储的是一维数组的内存地址
-
二维的数组的元素访问
格式 : 数组名[m索引][n索引];
m索引 : 访问哪一个一维数组
n索引 : 访问一维数组中的哪一个元素
System.out.println(arr[1][2]); // 66
二维数组遍历操作
it arr = {{11,22,33},{44,5, 66}};
// 遍历二维数组, 获取每一个一维数组
//外面这一层循环就是二维数组中一维数组的代表的下标或者索引
for(int i = 0; i < arr.length; i++){ // arr[i] : 每一个一维数组 // 继续遍历一维数组, 获取元素
//这个就是代表的再输出二维数组中一维数组内的索引
for(int j = 0; j < arr[i].length; j++){ System.out.println(arri); } }
数组的内存原理
-
务必打开 ppt 将内部流程梳理清楚
-
目标 : int[] arr = {11,22,33}; 脑海中就要有堆内存结构
步骤一:使用使用class包的时候,就有main方法,注意(这个时候已经进入方法区)
步骤二:jvm会自动带方法进入栈内存中进行操作,当在栈内存中new了一个数组
步骤三new了一个数组后就会在(堆内存里开辟一个空间,然后这个空间会有一个地址,地址返回到new的数组里,这个时候其实是int arr 中(其实是把这个地址赋值给了arr)arr等于那个地址),然后这个时候你想改数组中索引对应的那个数,就是在栈里再次通过地址到达堆中找到那个数组,然后为所欲为,就可以改索引对应的数字了;自己理解其实大概就是如此!!!!
标签:arr,数组,int,数据类型,索引,二维,一维 来源: https://www.cnblogs.com/xiaolinbx/p/16396689.html