01-数组介绍
介绍 : 是一种容器, 可以存储同种数据类型的多个值
同种数据类型 : 不要理解的太过于死板, 要结合隐式转换
同种数据类型 : 不要理解的太过于死板, 要结合隐式转换
02-数组的定义格式
数据类型[] 数组名;
注意事项 : 这种定义格式, 定义出来的, 只是数组类型的变量而已, 容器还没有被真正的创建
03-数组的静态初始化
初始化 : 在内存中, 为数组容器开辟空间, 并将数据存入空间的过程
int[] arr = new int[]{11,22,33,44,55};
打印数组名,看到数组的十六进制内存地址。[I@233ac41
@ : 分隔符
[ : 代表当前空间是数组类型, 几个中括号就是几维数组
I : 当前数组是int类型
233ac41 : 十六进制内存地址
04-数组的元素访问
索引介绍 : (角标, 下标) 数组中, 每一个空间所对应的编号, 编号从0开始逐个+1增长
05-数组的遍历操作
介绍 : 将数组中的 [每一个] 元素取出进行操作
场景 : 如果要实现的需求, 需要操作到数组中的每一个数据, 就需要遍历数组
package com.wanxi.test;
//一维数组,遍历所有元素
public class RunOneArray {
public static void main(String[] args) {
int[] array = {11, 22, 33, 44, 55, 66, 77};
int length = array.length;
for (int i = 0; i < length; i++) {
System.out.println(array[i]);
}
}
}
package com.wanxi.test;
//一维数组,所有元素的偶数和
public class SumEvenOneArray {
public static void main(String[] args) {
int[] array = {11, 22, 33, 44, 55, 66, 77};
int sum = 0;
int length = array.length;
for (int i = 0; i < length; i++) {
if (array[i] % 2 == 0) {
sum += array[i];
}
}
System.out.println(sum);
}
}
package com.wanxi.test;
//一维数组的最大值
public class MaxOneArray {
public static void main(String[] args) {
int[] array = {11, 22, 33, 44, 55, 66, 77};
int length = array.length;
int max = array[0];
for (int i = 1; i < length; i++) {
max = max > array[i] ? max : array[i];
}
System.out.println(max);
}
}
package com.wanxi.test;
//一维数组,随机产生的数据的最大值
import java.util.Random;
public class RandomOneArray {
public static void main(String[] args) {
int[] array = new int[7];
Random random = new Random();
int length = array.length;
int max = 0;
for (int i = 0; i < length; i++) {
array[i] = random.nextInt(100) + 1;
}
for (int i = 0; i < length; i++) {
max = max > array[i] ? max : array[i];
}
System.out.println("最大的数是: " + max);
}
}
package com.wanxi.test;
import java.util.Scanner;
//一维数组,键入数据的最大值
public class ScannerOneArray {
public static void main(String[] args) {
int[] array = new int[7];
int length = array.length;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入7个数据");
for (int i = 0; i < length; i++) {
System.out.print("第" + (i + 1) + "个数据是: ");
array[i] = scanner.nextInt();
}
int max = 0;
for (int i = 0; i < length; i++) {
max = max > array[i] ? max : array[i];
}
System.out.println("最大的数据是:" + max);
scanner.close();
}
}
06-数组的动态初始化
介绍 : 在创建数组的时候, 只需要指定长度, 系统就会分配默认初始化值
格式 : 数据类型[] 数组名 = new 数据类型[长度];
整数 : 0
小数 : 0.0
布尔 : false
字符 : '\u0000' ---> Unicode字符 ---> 常见的体现是空白字符
引用数据类型 : null
引用数据类型: 数组, 类, 接口
两种初始化的对比 :
区别 :
1. 动态初始化 : 手动指定长度, 系统分配默认值
2. 静态初始化 : 手动指定元素, 由系统计算出数组的长度
07-数组的内存图
务必打开 ppt 将内存图梳理清楚
提醒 : 如果内存不清楚, 后期遇到复杂案例, 思维跟不上 !!!
08-数组的常见问题
数组索引越界异常 : ArrayIndexOutOfBoundsException :
原因 : 访问了不存在的索引
空指针异常 : NullPointerException :
原因 : 当引用数据类型的变量, 记录到null之后, 代表跟堆内存的链接被切断了
这时候还要去访问堆内存的数据, 就会出现空指针异常
09-二维数组介绍
介绍 : 二维数组也是一个容器, 容器中存储的都是一维数组
场景 : 发现要操作的数组, 有多个, 这多个数组也属于一个整体
10-二维数组静态初始化
数据类型[][] 数组名 = new 数据类型[][] {
{一维数组1},
{一维数组2}
};
11-二维数组的遍历操作
思路 :
遍历二维数组, 获取到每一个一维数组
继续遍历一维数组, 获取具体的元素
package com.wanxi.test;
//二维数组,遍历所有元素
public class RunTwoArray {
public static void main(String[] args) {
int[][] array = {{4, 5, 6, 7}, {114, 55, 33, 74, 52}, {11, 2, 54, 14}, {12, 36, 10}};
int length = array.length;
for (int i = 0; i < length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
package com.wanxi.test;
//二维数组,输入的所有元素的和
import java.util.Scanner;
public class ScannerTwoArray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[][] array = new int[2][3];
int length = array.length;
System.out.println("请输入数据");
int sum = 0;
for (int i = 0; i < length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print("请输入第" + (i + 1) + "组的第" + (j + 1) + "个数据: ");
array[i][j] = scanner.nextInt();
}
}
for (int i = 0; i < length; i++) {
for (int j = 0; j < array[i].length; j++) {
sum += array[i][j];
System.out.print(array[i][j] + " ");
}
System.out.println();
}
System.out.println("输入数据的和为: " + sum);
scanner.close();
}
}
package com.wanxi.test;
//二维数组,所有元素的和
public class SumTwoArray {
public static void main(String[] args) {
int[][] array = {{4, 5, 6, 7}, {1, 2, 5, 1}, {2, 6, 10}};
int length = array.length;
int sum = 0;
for (int i = 0; i < length; i++) {
for (int j = 0; j < array[i].length; j++) {
sum += array[i][j];
}
}
System.out.println("和为: " + sum);
}
}
12-二维数组动态初始化
格式 :
数据类型[][] 数组名 = new 数据类型[m][n];
m : 指定这个二维数组, 可以存储多少个一维数组
n : 指定每一个一维数组中, 可以存储多少个元素
13-二维数组内存图
打开 ppt 梳理清楚 (以后用的少)