数组操作
1.数组地址转移问题【难点】

public static void main(String [] args) {
int[] arr1 = new int[10];
int[] arr2 = new int[10];
arr1[0] = 10;
arr2[0] = 20;
System.out.println("arr1[0]:" + arr1[0]);
System.out.println("arr2[0]:" + arr2[0]);
arr1[5] = 50;
arr2 = arr1;
arr1[0] = 30;
arr2[0] = 100;
System.out.println("arr1[0]:" + arr1[0]);
System.out.println("arr2[0]:" + arr2[0]);
System.out.println("arr2[5]:" + arr2[5]);
问题总结:
1.
int[] arr1 = new int[20];
int[] arr2 = new int[10];
arr1 = arr2;
arr1[15] ???;错误的
arr1和arr2执行的空间为同一个数组空间
2.
int[] arr1 = new int[10];
int[] arr2 = new int[10];
arr1[0] = 10;
arr2[0] = 20;
arr2[5] = 100;
arr1[0] = arr2[0];
赋值操作完成的是对于元素直接内容的转换,不涉及数组地址转移
2.数组作为方法的参数
public static void main(String[] args) {
}
/*
(String[] args)
String[] args就是给数组作为方法参数格式,这里main方法需要的参数是一个String类型的数组
格式:
public static返回值类型方法名(数据类型[] 数组参数名)
数组是可以作为方法的返回值
数组作为参数分析过程
a.在一个int类型数组中,存储的内容是1 ~ 10
int[] arr = {10, 8, 35, 67, 31, 25, 11, 30,28, 99};
使用代码找出,元素== 30所在下标位置
方法声明:
public static int indexOf(int[] arr, int find)
方法实现和文档注释
/**
*在指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于0,没有找到
*返回-1
*
* @param arr 查询数据的源数据数组,int类型数组
* @param find指定在数组中查询的数据,也是对应int类型
* @return找到指定元素,返回值大于等于0,否则返回-1
*/
public static int indexOf(int[] arr,intfind) {
//
假设查询的数据不存在
int index = -1;
//遍历整个数组
for (int i = 0; i < arr.length; i++) {
//发现数组中下标为i的元素和find一致,找到内容,保存下标
if (find == arr[i]) {
index = i;
//终止循环
break;
}
}
//返回index中保存的数据
returnindex;
}
方法验证和传参方式
class Demo {
public static void main(String[] args) {
int[] array = {10,8,35,67,31,25,11,30,28,99};
int find = 13;
//调用的方法需要数组作为方法的参数,
//这里传入【数组名】
int index = indexOf (array,find);
if (index >= 0) {
System.out.println("index : " + index);
} else {
System.out.println("Not Found!");
}
}
/**
*在指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于0,没有找到
*返回-1
*
* @param arr 查询数据的源数据数组,int类型数组
* @param find指定在数组中查询的数据,也是对应int类型
* @return找到指定元素,返回值大于等于0,否则返回-1
*/
public static int indexOf(int[] arr, int find){
//假设查询的数据不存在
int index = -1;
//遍历整个数组
for (int i = 0; i < arr.length; i++) {
//发现数组中下标为i的元素和find一致,找到内容,保存下标
if (find ==arr[i]) {
index = i;
//终止循环
break;
}
}
//返回index中保存的数据
return index;
}
}
方法运行内存图

总结
1. 数组作为方法参数的固定格式
(数据类型[] 数组参数名)
2.数组作为方法的实际参数的固定格式
(数组名)
3.数组名作为方法的参数,实际传递的是数组空间首地址,就是和数组地址转移问题是一致的
4.方法执行需要参数,如果没有给予对应格式的实际参数,直接报错