1. 数组的常见操作
1.1 数组越界异常
观察一下代码,运行后会出现什么结果。
-
创建数组,赋值 3 个元素,数组的索引就是 0 , 1 , 2 ,没有 3 索引,因此我们不能访问数组中不存在的索引,程序运行后,将会抛出 ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是 不能出现 的,一旦出现了,就必须要修改我们编写的代码。
1.2 数组空指针异常
观察一下代码,运行后会出现什么结果。
arr = null 这行代码,意味着变量 arr 将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是 不能出现 的,一旦出现了,就必须要修改我们编写的代码。
空指针异常在内存图中的表现
1.3 数组遍历【重点】
数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是 0 到 lenght - 1 ,可以作为循环的条件出现。
1.4 数组获取最大值元素
最大值获取:从数组的所有元素中找出最大值。
实现思路:
定义变量,保存数组 0 索引上的元素
遍历数组,获取出数组中的每个元素
将遍历到的元素和保存数组 0 索引上值的变量进行比较
如果数组元素的值大于了变量的值,变量记录住新的值
数组循环遍历结束,变量保存的就是数组中的最大值
1.5 数组反转
数组的反转: 数组中的元素颠倒顺序,例如原始数组为 1,2,3,4,5 ,反转后的数组为 5,4,3,2,1
实现思想: 数组最远端的元素互换位置。
实现反转,就需要将数组最远端元素位置交换
定义两个变量,保存数组的最小索引和最大索引
两个索引上的元素交换位置
最小索引 ++ ,最大索引 -- ,再次交换位置
最小索引超过了最大索引,数组反转操作结束
2. 数组作为方法参数和返回值
2.1 数组作为方法参数
以前的方法中我们学习了方法的参数和返回值,但是使用的都是基本数据类型。那么作为引用类型的数组能否作为方法的参数进行传递呢,当然是可以的。
数组作为方法参数传递,传递的参数是数组内存的地址。
2.2 数组作为方法返回值
数组作为方法的返回值,返回的是数组的内存地址
2.3 方法的参数类型区别
代码分析
1. 分析下列程序代码,计算输出结果。
2. 分析下列程序代码,计算输出结果。
总结:
方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值