day5-数组
目录
数组
- 数据类型[] 数组名=new 数据类型[数组长度];
- 两种初始化类型
- 动态初始化
- 只给长度,不赋值
- int[] a=new int[5];
- 静态初始化
- 给出初始化值,系统确定长度
- int[] a=new int[]{1,2,3,4,5};
- int[] a={1,2,3,4,5};
- 动态初始化
- 存储
- 一维数组存储
- int[] arr=new arr[3];
- 堆存储,new出来的数组或对象,arr[3]即开辟了三个空间。
- 栈储存局部变量,在方法中定义的变量,栈中保存变量在堆中的地址。
- 二维数组存储
- int[][] arr=new arr[3][2];
- 在栈中创建局部变量,保存arr在堆中的地址
- 堆中开辟三个空间,分别存储arr[0],arr[1],arr[2];另外的地址,分别存储第一行、第二行、第三行数据内容
- int[][] arr={ {123,33,22},{3,5},{2}}
- 存储时固定了空间,更改时不能扩展。
-
-
- 存储时固定了空间,更改时不能扩展。
- int[][] arr=new int[3][];
- 此时,仅在堆中创建了一个空间保存了,二级空间还没有创建,若要进行存储、读取,还要继续以一维数组的方式初始化。
- int[][] arr=new arr[3][2];
- 两个数组,三个引用
- 定义两个数组(new int[2]),三个引用(int[] arr1)
- 实际只开辟了两个空间存储数组,引用类似于c++的指针,即三个指针指向两个空间。
- 故修改时,指向同一空间的引用有修改时,值一起改变。
-
-
- 一维数组存储
- 传值
- 纯数据类型,int a,b;a=b; 传值
- 引用数据类型,int[] arr1,arr2; arr2=arr1; 传址
异常
- 空指针:数组名指向null,会出现空指针异常
- 越界:int[] a=new int[5],调用a[5],会显示数组索引越界异常
练习
- 数组取最大值
- 程序
-
-
- 程序
- 数组取反
- 程序
-
-
- 程序