课堂知识点
一、数组
1.1什么是数组,数组的功能是什么
-
数组的概念和特点
数组其实就是一个容器。是一个可以存储多个相同类型数据的容器
数组是一个引用数据类型 可以是基本数据类型
数组的长度在程序运行期间,不可以改变
【元素】 == 【数据值】
1.2数组的定义格式
-
动态初始化
数据类型[] 数组名 = new 数据类型[长度];示例:
//创建一个长度为8的整数类型数组 int[] arrA = new int[8]; //创建一个长度13的小数类型数组 double[] arrB = new double[13]; //创建一个长度为4的字符类型数组 char[] arrC = new char[4]; -
静态初始化
- 完整格式
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};示例:
//创建一个整数类型数组,保存10 20 30 40 50 int[] arrA = new int[]{10,20,30,40,50}; //创建一个小数类型数组,保存3.5,4.5,6.7,8.8 double[] arrB = new double[]{3.5,4.5,6.7,8.8}; //创建一个布尔类型数组,保存true true false true boolean[] arrC = new boolean[]{true,true,false,true};- 省略格式
数据类型[] 数组名 = {元素1,元素2,元素3,...};示例:
public class Demo03Array { public static void main(String[] args) { // 省略格式的静态初始化 int[] arrayA = { 10, 20, 30 }; // 静态初始化的标准格式,可以拆分成为两个步骤 int[] arrayB; arrayB = new int[] { 11, 21, 31 }; // 动态初始化也可以拆分成为两个步骤 int[] arrayC; arrayC = new int[5]; // 静态初始化的省略格式,不能拆分成为两个步骤。 // int[] arrayD; // arrayD = { 10, 20, 30 }; } }
1.3数组中的元素要如何获取
-
访问元素格式
数组名[索引]; -
索引
指的是给数组中每个元素加一个编号。编号从0开始。
-
示例代码
public class Test01 { public static void main(String[] args) { //需求:定义一个小数类型数组,里面存储元素为:2.3,3.5,5.6,6.7 double[] arrB = {2.3,3.5,5.6,6.7}; //如何获取数组长度 数组名.length System.out.println(arrB.length); System.out.println("========"); //数组的遍历 for(int i = 0; i < arrB.length; i++) { System.out.println(arrB[i]); } } } -
数组默认初始化值
- 整数类型:0
- 浮点类型:0.0
- 字符类型:\u0000(空白字符)
- 布尔类型:false
- 引用数据类型:null
1.4 给数组中的元素赋值
-
赋值格式
数组名[索引] = 具体值; -
示例代码
public class Demo05ArrayUse {
public static void main(String[] args) {
// 动态初始化一个数组
int[] array = new int[3];
System.out.println(array); // 内存地址值
System.out.println(array[0]); // 0
System.out.println(array[1]); // 0
System.out.println(array[2]); // 0
System.out.println("=================");
// 将数据123赋值交给数组array当中的1号元素
array[1] = 123;
System.out.println(array); // 内存地址值
System.out.println(array[0]); // 0
System.out.println(array[1]); // 123
System.out.println(array[2]); // 0
}
}
二、数组内存图解
2.1java中的内存划分

2.2一个数组的内存图

2.3两个数组的内存图

2.4两个引用指向同一个数组的内存图

三、数组操作常见问题
3.1数组索引越界异常
ArrayIndexOutOfBoundsException
-
出现原因
使用了不存在的索引
-
解决方案
修改为正确索引即可
3.2空指针异常
NullPointerException
-
出现原因
对象没有任何引用,没有new
-
解决方案
重新给他一个对象的引用,给他一个new
四、数组的案例
- 课堂出的题目
public class Test02 {
public static void main(String[] args) {
//需求:定义一个整数类型的数组,里面保存元素:1 2 3 4 5 6 7 8 9 10
int[] arr = {1,2,3,4,5,6,7,8,9,10};
// 获取数组中所有元素的和
int sum = 0;
for(int i = 0; i < arr.length; i++) {
//System.out.println(arr[i]);
sum += arr[i];
}
System.out.println("总和:" + sum);
// 获取数组中所有元素的平均值
System.out.println("平均值:" + ((double)sum / arr.length));
// 获取数组中元素是偶数的和
int result = 0;
for(int i = 0; i < arr.length; i++) {
if(arr[i] % 2 == 0) {
result += arr[i];
}
}
System.out.println("偶数的和:" + result);
}
}
-
获取数组中的最值
-
最大值
public class Demo05ArrayMax { public static void main(String[] args) { int[] array = { 5, 15, 30, 20, 10000, 30, 35 }; int max = array[0]; // 比武擂台 for (int i = 1; i < array.length; i++) { // 如果当前元素,比max更大,则换人 if (array[i] > max) { max = array[i]; } } // 谁最后最厉害,就能在max当中留下谁的战斗力 System.out.println("最大值:" + max); } } -
最小值
public class Demo06ArrayMin { public static void main(String[] args) { int[] array = { 5, 15, 30, 20, 10000, -20, 30, 35 }; int min = array[0]; // 比武擂台 for (int i = 1; i < array.length; i++) { // 如果当前元素,比min更小,则换人 if (array[i] < min) { min = array[i]; } } System.out.println("最小值:" + min); } }
-
-
数组元素反转
public class Demo07ArrayReverse { public static void main(String[] args) { int[] array = { 10, 20, 30, 40, 50 }; // 遍历打印数组本来的样子 for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } System.out.println("============"); /* 初始化语句:int min = 0, max = array.length - 1 条件判断:min < max 步进表达式:min++, max-- 循环体:用第三个变量倒手 */ for (int min = 0, max = array.length - 1; min < max; min++, max--) { int temp = array[min]; array[min] = array[max]; array[max] = temp; } // 再次打印遍历输出数组后来的样子 for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } }
五、数组作为方法参数传递
5.1数组作为方法参数传递
- 引用数据类型作为方法参数传递,传递的是对象的内存地址值
- 基本数据类型作为方法参数传递,传递的就是具体的数据值
5.2数组作为方法返回值使用
- 引用数据类型作为方法返回值使用时,返回的是对象的内存地址值
- 基本数据类型作为方法返回值使用时,返回的是具体的数据值
练习题
- 练习数组的两种定义格式
- 练习如何获取数组中的元素
- 练习如何为数组元素赋值
- 练习数组的案例
- 练习将数组作为方法参数传递和返回值使用
面试题
- 数组的定义格式有几种?
- 如何获取数组中的元素?
- 如何为数组元素赋值?
- 数组默认初始化值都是什么?
- java中的内存是如何划分的?
- 使用数组时,有哪些常见的小问题需要注意?
- 数组作为方法参数传递时,传递的是什么?
- 数组作为方法返回值使用时,返回的是什么?
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




