数组(array)

发布于:2022-12-16 ⋅ 阅读:(591) ⋅ 点赞:(0)

数组定义格式:

• 格式1:数据类型[ ] 变量名,如: int[] arr

•即是定义了一个int类型的数组,数组名叫arr[ ]

• 格式2:数据类型[] 变量名,如:int arr[]

•即是定义了一个int类型的变量,变量名是arr数组

动态初始化

初始化只指定数组长度,由系统数组分配初始数值

• 动态初始化

• 静态初始化

格式: 数据类型[] arr=new 数据类型[数组长度];

范例: int[] arr=new int[5]; //new是为数组arr申请内存空间

静态初始化

格式: 数据类型[] 变量名=new 数据类型[]{*数据1,数据2,数据3,…*}

范例: int[ ] arr=new int[ ]{1,2,3};

范例: int[ ] arr={数据1,数据2,数据3};

简化: int[ ] arr={1,2,3};

数组元素访问:

• 数组变量访问方式

• 格式:数组名

• 数组内部保存的数据的访问方式

• 格式:数组名[索引]

• 索引是数据中数据的编号方式

• 作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名

特征:0开始,连续的,逐一增加

内存分配

• 栈内存:存储局部变量

• int[] arr

定义在方法中的变量,例如:arr使用完毕立马消失

• 堆内存:存储new出来的内容(实体,对象)

• new int[3]

//数组赋值
int[] arr=new int[2];
int[] arr2=new int[2];
arr[0]=100;
arr2[0]=200;
arr2[2]=300;
int[] arr2=arr;

数组常见操作问题

• 索引越界:访问了数组中不存在的对应元素,造成索引越界问题;

典例:索引越界异常(ArrayIndexOutOfBoundsException)
int[] arr=new int[3];
System.out.println(arr[3]);//我们可以知道int[3]是0,1,2,那么arr[3]不存在;

• 空指针异常:访问的数组已经不再是指向堆内存的数据,造成空指针异常;

典例:空指针异常(NullPointerException)
int[] arr=new int[3];
System.out.println(arr[2]);
arr=null; //此时arr地址指向null,找不到原来的地址了,下面强行访问arr[0]就会报错;
System.out.println(arr[0]);

遍历

即是将数组中的所有数输出一遍

//典例:输出数组数据
int[] arr=**new** int[3];
    **for** (int i = 0; i <arr.length ; i++) {
      System.out.println(arr[i]);
    }

典例:取最值
int[] arr={12,45,23,67,87,22};
    int max=arr[0];
    **for** (int i = 1; i <arr.length ; i++) {
      **if**(max<arr[i]){
        max=arr[i];
      }
    }
    System.out.println(max);
本文含有隐藏内容,请 开通VIP 后查看