数组
- 数组时一个存储数据的容器
- 是在内存中开辟一块连续的内存空间,用来存储一类相同类型的数据。
- 数组是引用数据类型
- 数组是定长的,再被创建的时候,能存几个数据就已经确定了
数组的声明
-
数据类型 数组名[] = new 数据类型[长度]
-
数据类型[] 数组名 = new 数据类型[长度]
-
数据类型 数组名[] = null;
数组名 = new 数组类型[长度]- 声明后的数组有默认值int 默认0
数组的初始化
静态初始化
数据类型 数组名[] = {值,值,值,...};
数据类型 数组名[] = new 数据类型{值,值,值,...}
- Java中的数组必须先初始化,然后才能使用。
- 初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
//错误的写法
int[] arr = new int[3] {1,2,3};
error:Cannot define dimension expressions when an array initializer is provided
------------------
int arr[];
arr = {12,3,5};
error:Array constants can only be used in initializers
二维数组
数据类型[][] 变量名 = new 数据类型[m][n];
数据类型[][] 变量名 = new 数据类型[m][];
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
数组的访问
- 数组是通过下标访问的
- 以0开始,最后一个元素是arr.length-1
内存分析
imageint arr1[] = {4,8,1};
int arr2[] = arr1;
arr2[1] = 100;
System.out.println(arr1[1]);
输出
100
数组操作常见错误
-
数组索引越界
ArrayIndexOutOfBoundsException
访问到了数组中的不存在的索引时发生。 -
空指针异常
NullPointerException
数组引用没有指向实体,却在操作实体中的元素时。 -
试图创建长度为负的数组
NegativeArraySizeException
.length
返回数组长度,注意没有括号
int i[] = {32,2,343,89,7654,234};
int length = i.length;
//如果不接受返回值
//error:Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration
网友评论