数组是一种用于储存多个相同类型数据的存储模型
数组定义格式
格式一:数据类型 [ ] 变量名
例如 : int [ ] arr
定义了一个int类型的数组,数组名为arr
格式二: 数据类型 变量名[ ]
例如 : int arr [ ]
定义了一个int类型的变量,变量名是arr数组
数组初始化:
1.动态初始化
初始化时只规定数组长度,由系统为数组分配初始值
数据类型 [ ] 变量名 = new 数据类型 [ 数组长度]
int [ ] arr = new int [3]
左边:
int :说明数组中的元素类型为int类型
[ ]:说明这是一个数组
arr:数组名称
右边:
new:为数组申请内存空间
int :说明数组中的元素类型为int类型
[ ]:说明这是一个数组
3:说明内存长度为3,其实就是数组中的元素个数
2.静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度
格式: 数据类型 [ ] 变量名 = new 数据类型[ ] { 数据1,数据2,数据3,…};
int [ ] arr= new int [ ] {1,2,3};
简化格式: 数据类型 [ ] 变量名 = { 数据1,数据2,数据3,…};
int [ ] arr= {1,2,3};
int [] arr = {1,2,3,5,6,};
System.out.println(arr[0]);
System.out.println(arr[1]);
arr[0]=111;
arr[1]=222;
System.out.println(arr[0]);
System.out.println(arr[1]);
输出结果:1
2
[I1b5
111
222
JAVA中 内存分配
(001为数组的地址值(这里的001是自己随便给的))
单个数组内存图
int [ ] arr = new int [3];
arr[0]=100;
arr[2]=200;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
```
执行结果:
100
0
200
多个数组指向相同内存图 (数组的地址相同)
int [] arr = new int [2];
System.out.println(arr[0]);
System.out.println(arr[1]);
arr[0]=111;
arr[1]=222;
System.out.println(arr[0]);
System.out.println(arr[1]);
int []arr2 =arr;
arr[1]=200;
System.out.println(arr);
System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
实验结果:
0
0
111
222
[I1b5
[I1b5
111
200
数组操作常见小问题
1.索引越界
访问了数组中不存在的索引对应元素,造成索引越界问题
出现异常
ArrayIndexOutOfBoundsException
2.空指针异常
访问的数组已经不再指向堆内存的数据,造成空指针异常
null:空值,引用数据类型的默认值,表示不指向任何有效对象
异常:
NullPointerException
遍历
输出数组中所有数据
.length 获取数组中元素个数
int [ ] arr= new int {1,2,3};
**for (int x=0;x<arr.length;x++)**
{
System.out.println(arr[x]);
}
最大值
获取数组中的最大值:
int arr[]=new int [] {1,34,75,84,12,3543,64462,6436574,9777777};
int max=arr[0];
for(int x=1;x<arr.length;x++) {
if( arr[x]>max)
{
max=arr[x];
}
}
System.out.println(max);