数组地址转移问题【难点】
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. 报错
2. 30 30 50
3. 100 100 50 true
4. 30 100 50
5. 50 100 50
6. 30 100 0
*/
}
问题总结:
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];
arr1[0] ?
arr1[5] ?
20, 0
赋值操作完成的是对于元素直接内容的转换,不涉及数组地址转移
3.
是否可以展示数组中 arr[0] arr[5]元素的空间首地址
不好意思,不能!!!
数组作为方法的参数
还是比葫芦画瓢
public static void main(String[] args) {
}
/*
(String[] args)
String[] args 就是给数组作为方法参数格式,这里main方法需要的参数是一个String 类型的数组
格式:
public static 返回值类型 方法名(数据类型[] 数组参数名)
数组是可以作为方法的返回值
【BUT】
在我没有演示,讲解数组作为返回值使用的情况下,任何人不得使用数组作为返回值
以防万一你遇到一些你想不到的错误!!!
*/
数组作为参数分析过程
/*
a. 在一个int类型数组中,存储的内容是1 ~ 10
int[] arr = {10, 8, 35, 67, 31, 25, 11, 30, 28, 99};
使用代码找出,元素 == 30 所在下标位置
找出元素30对应的下标位置
1. 这里需要利用循环遍历数组,查询操作
2. 查询结果不确定,有可能找到,有可能