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];另外的地址,分别存储第一行、第二行、第三行数据内容
          • day5-数组
      • int[][] arr={ {123,33,22},{3,5},{2}}
        • 存储时固定了空间,更改时不能扩展。
          • ​​​​​​​day5-数组
      • int[][] arr=new int[3][];
        • 此时,仅在堆中创建了一个空间保存了,二级空间还没有创建,若要进行存储、读取,还要继续以一维数组的方式初始化。
    • 两个数组,三个引用
      • 定义两个数组(new int[2]),三个引用(int[] arr1)
      • 实际只开辟了两个空间存储数组,引用类似于c++的指针,即三个指针指向两个空间。
      • 故修改时,指向同一空间的引用有修改时,值一起改变。
        • ​​​​​​​day5-数组
        • day5-数组
  • 传值
    • 纯数据类型,int a,b;a=b;  传值
    • 引用数据类型,int[] arr1,arr2; arr2=arr1; 传址

异常

  • 空指针:数组名指向null,会出现空指针异常
  • 越界:int[] a=new int[5],调用a[5],会显示数组索引越界异常

练习

  • 数组取最大值
    • 程序
      • ​​​​​​​day5-数组
  • 数组取反
    • 程序
      • ​​​​​​​day5-数组