数组的概念和数组变量的定义【重点】
数组的初始化及使用【重点的重点】 ---------------最核心的内容--------------
数组的内存图【理解】
数组的练习【重点的重点】 ---------------最核心的内容--------------
数组的常见问题【理解】
快捷键:
生产输出语句: 表达式.sout
数组遍历:
数组名.fori: 正着遍历
数组名.forr: 倒着遍历
多个数据的类型必须保持一致
数组的长度一旦确定,将永远不可以发生改变
数组变量定义格式一: 推荐使用
数据类型[] 数组名称;
数组变量定义格式二: 不推荐使用的
数据类型 数组名称[];
(1)定义一个存储int类型数组的变量arrayA int[] arrayA;
(2)定义一个存储double类型数组的变量arrayB double[] arrayB;
(3)定义一个存储char类型数组的变量arrayC char[] arrayC;
数组的第一种初始化方式(动态初始化: 指定数组长度)
格式: 数据类型[] 数组名称 = new 数据类型[长度];
右侧数据类型: 和左侧保持一致
长度: 规定了数组容器中可以存储多少个数据
char[] arrayC = new char[5];
数组的第二种初始化方式(标准格式静态初始化: 指定元素)
格式: 数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...,元素n最后一个元素后面没有逗号};
右侧[]中不能写长度
double[] arrayB = new double[]{1.1, 2.2, 3.3, 4.4};
数组的第三种初始化方式
数组的第三种初始化方式(简化格式静态初始化: 指定元素)
格式: 数据类型[] 数组名称 = {元素1,元素2,...,元素n};
int[] arrayA = {100, 200, 300};
int[] arr;
arr = new int[3];
arr = new int[]{10,20,30,50,80};
int[] arr2 = {100,200,300,500};
### 数组的使用从0开始到数组长度减1,(3)索引编号必须是一个>=0的int数据
数组名称.length length后面没有(),添加()是错误的
int size = array.length;
array[array.length-1]: 是在获取数组中的某个元素,[]中写必须是一个int数字
### 数组遍历
注意for循环的结束条件的两种写法:
<=array.length - 1
<array.length
*/
public class Demo01ArrayEach {
public static void main(String[] args) {
int[] array = {100, 200, 300};
for (int i = 0; i < 3; i++) {
System.out.println("索引编号: " + i + " 对应的元素值: " + array[i]);
}
System.out.println("------------");
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
System.out.println("------------");
for (int i = 0; i <= array.length-1; i++) {
System.out.println(array[i]);
}
}
}
### 求int数组元素和
public class Demo04SumArray {
public static void main(String[] args) {
int[] array = {100, 200, 300, 400};
int sum = 0;
int count = 0;最大值
int max = a;
int max1 = array[0];### 最大值元素
for (int i = 0; i < array.length; i++) {
sum = sum + array[i];
}
if (array[i] % 2 == 0) {
System.out.println(array[i]);
sum += array[i];
count++;
}
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
if (array[i] > max1) {
max1 = array[i];
}
System.out.println("所有的偶数元素的个数: " + count);
System.out.println("最大值: "+max1);
System.out.println("最大值: " + max);
System.out.println("数组元素和: " + sum);
}
}
一个数组内存图
1.动态初始化数组,元素有默认值
(1)基本类型
整数数组: 0
小数数组: 0.0
布尔数组: false
字符数组: 空白字符
(2)引用类型
所有引用类型数组: null
2.注意
(1)数组变量保存数组在堆内存空间的地址值
(2)通过数组变量中保存的地址值,找到堆内存空间的具体的数组
(3)再通过索引编号,找到要操作的该数组中的具体的某个元素
*/
数组索引越界ArrayIndexOutOfBoundsException
产生原因: 当使用int数字作为索引获取数组元素时,索引值已经超出了数组的索引范围
解决方案:
(1)不使用超出索引范围的int数字来获取数组元素
(2)修改索引越界的数字,让它在数组索引范围内
### 数组空指针异常NullPointerException类,
数组变量的值是null时,说明该数组变量已经不再执行堆内存空间的任何数组了, 所以就无法通过索引的方式访问数组元素了,只要访问,就会报出空指针异常
(1)不使用值是null的数组变量来获取数组元素
(2)找到数组变量值是null的地方,给数组变量重新赋值,让改数组变量重新指向一个新的数组空间