1.如何使用数组?
public static void main(String[] args) {
//声明一个int数组
//这里是new一个,有且只能保存int类型的数据
//但是这个array依然是一个引用型的数据类型
//new 的作用是在内存(堆区)中申请一个连续的内存空间——【堆区】
//开发中的一个引用数据类型实际上是一个指向其他内存空间的一个数据类型
//引用数据类型的变量中存储的内容是其他内存空间的【首地址】
//当cup访问到【引用数据类型】变量时,会得到其存储地址,然后直接跳转到对应的内存空间中,执行代码,获取数据,操作内容;
int[] array = new int[10];
//数组的正常使用
//给数组赋值
//数组下表从0开始
array[0] = 10;
array[1] = 11;
//那么如果超出一开始设置的数组的范围会怎么样?
array[30] = 13; //报异常——数组下标越界异常 java.lang.ArrayIndexOutOfBoundsException
//取出数组中的值,取出下标为1的值
int a1 = array[1];
System.out.println(a1);
}
2.数组的地址转移问题是?
所以问题的原因是 ‘=’赋值号把地址指向给变更了
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]); // 10 没问题
System.out.println("arr2[0]:" + arr2[0]); // 20 没问题
arr1[5] = 50;
arr2 = arr1; //此时arr2 与 arr1指向的是同一个地址了
arr1[0] = 30;
arr2[0] = 100; //此时arr2[0] = arr1[0] = 100
System.out.println("arr1[0]:" + arr1[0]); //100 所以这个是100
System.out.println("arr2[0]:" + arr2[0]); //100 所以也是100
System.out.println("arr2[5]:" + arr2[5]); //此时arr1[5] = arr2[5] = 50
}