数组定义
格式1(推荐):数据类型[] 变量名; 例: int[] arr;
格式2:数据类型 变量名[]; 例: int arr[];
初始化
就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。数组的初始化分为两种方式:一种是静态初始化,一种是动态初始化。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…};
例:int[] arr = new int[]{1,2,3};
简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,…};
例:int[] arr = {1,2,3};
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[] 变量名 = new 数据类型[数组长度];
例:int[] arr = new int[3];
注意:两种初始化的方式是独立的,不可以混用。
获取数组长度(元素个数):格式:数组名.length
数组内存图
数组使用中经常遇到的两个小问题
1:索引越界(ArrayIndexOutOfBoundsException):访问了数组中不存在的索引对应的元素,造成索引越界问题
2:空指针异常(NullPointerException):对象不再指向堆内存,还想继续访问数据,访问失败
二维数组
格式1(推荐):数据类型[] [] 变量名; 例: int[] [] arr;
格式2:数据类型 变量名[] []; 例: int arr[] [];
格式3:数据类型[] 变量名[]; 例: int[] arr[];
二维数组初始化
静态初始化:
格式:数据类型[] [] 变量名 = new 数据类型[] []{{元素…},{元素…},{元素…},…};
例:int[] [] arr = new int[] []{{1,2,3},{4,5,6},{7,8,9}};
简化格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…},…};
例:int[] [] arr = {{1,2,3},{4,5,6},{7,8,9}};
注意:一维数组中元素的个位可以是不同的
如: int[] [] arr = new int[] []{{1,2,3},{4,5},{6,7,8,9}};
动态初始化:
格式:数据类型[] [] 变量名 = new 数据类型[m] [n];
例:int[] [] arr = new int[2] [3];
二维数组内存图
二维数组遍历及元素打乱
public class ArrayTest02 { public static void main(String[] args) { //定义二维数组,并进行静态初始化 int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; //创建随机数对象 Random r = new Random(); //遍历二维数组,进行元素打乱 for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { //arr[i][j] int x = r.nextInt(arr.length); int y = r.nextInt(arr[x].length); //元素交换 int temp = arr[i][j]; arr[i][j] = arr[x][y]; arr[x][y] = temp; } } //二维数组遍历展示 for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } } }
标签:初始化,arr,int,数据类型,数组,变量名 From: https://www.cnblogs.com/sunny-sml/p/16974798.html