定义:用于存储一组相同数据类型的元素
一、如何声明:
int[] array = //数组的声明形式
数组的存储形式是连续不间断的,创建数组是会开辟一个内存空间进而得到一个首地址
注意:
1.数组的索引值是从0开始到数组长度减一为止
2.数组的长度一旦声明则不能随意进行改变
二、如何初始化:
1.静态初始化-元素 索引 长度
int[] array = {2,3,4,5,6};//第一种
int[] array = new array{2,3,4,5,6};//第二种
//两种其实是同一种
//第一种只是简化了第二种
//第二种为动态初始化的静态初始化写法
注意:
1.初始化元素时内容必须与前面的数据类型一致
2.同一个数组只能发生一次静态初始化而且只能在初次声明的时候
2.动态初始化-元素 索引 长度
int[] array = new int[5];//后面中括号里是数组的长度也就是元素的个数
array[0] = 22;
array[1] = 77;
array[2] = 11;
array[3] = 10;
array[4] = 9;
注意:
1.动态初始化是Java中标准定义数组的格式,而静态初始化是为了方便才从动态初始化简化得到的
2.初始化元素时内容必须与前面的数据类型一致
3.动态初始化的时候若没有赋值则其内容都为该数据类型的默认值,如int类型默认值为0
3.静态初始化和动态初始化在使用时的差异
(1) 静态初始化:适合元素比较少,而且没有什么规律性
(2) 动态初始化元素比较多,而且有一定的规律性,可以使用循环语句赋值
三、数组元素的常规操作:
1.取值:
int[] a = {2,3,4,8,9};
System.out.println(a);//这样得到的是数组的首地址[I@4554617c
int[] b = {6,4,8,9,2};
int x = b[0];
System.out.println(x);//6 加上索引才是值
System.out.println(b[0]);//6 也可以直接输出b[0]的值
2.赋值:
int[] a = new a[3];//动态初始化 长度为3
System.out.println(a[0]);// 0 为int类型的默认值0
a[0] = 3;
System.out.println(a[0]);// 3 已经赋给a[0]为3
3遍历:
int[] arrays = {2,9,8,7,2};
for (int i = 0;i < arrays.length ;i++ ){
System.out.println("====>:"+i);
System.out.println(arrays[i]);
}
注意:
1.arrays.length获得的是arrays数组的长度
2.因为数组索引为0~arrays.length-1,所以for循环的条件要小于数组的长度或者小于等于arrays.length-1
四、数组常见的异常:
int[] arrays = {2,9,8,7,2};
System.out.println(arrays[5]);
该程序最大索引位置为arrays[4](为什么是arrays[4]在上面已经讲过这里不在重复)而上面程序我想要获取arrays[5]的值,那么就会出现程序错误,我们也叫做异常,如下
ArrayIndexOutOfBoundsException:数组索引越界异常
产生的原因:访问的索引位置超过了数组所允许的最大索引
蓝色部分则为程序出现错误所在的行数,以便于我们进行修改
五、为什么要用数组呢?
方便于我们对于元素整体进行操作[增, 删,改,查]
六、数组的一些操作:
1.值的交换:
int[] arrays = {2,1,3,5,4,7};
for (int i = 0;i <= 4;i+=2 ){//每隔两个元素进行交换
int temp = 0;
temp = arrays[i];
arrays[i] = arrays[i+1];
arrays[i+1] = temp;
}
for (int i = 0;i < arrays.length ;i++ ){
int a = arrays[i];
System.out.println(a);
}
2.地址交换:
int[] a = {3,5,4,1,2};
int[] b = {1,7,2,6,3,10,11};
//把b里存储的关于数组的地址给a
int[] c = a;//将a里存储的数组地址给c
a = b;//b的数组的地址给a
b = c;
3.数组的合并:
int[] a = {3,4,4,1,2};
int[] b = {3,7,2,3,3,10,11};
//1.创建一个新的数组-确定新数组长度
int[] c = new int[b.length+a.length];//5+7
//2.如何将旧元素赋值到新的数组中去
for (int i = 0;i < a.length ;i++ ){
/*
c[0] = a[0];
c[1] = a[1];
c[2] = a[2];
以此类推
*/
c[i] = a[i];
}
for (int i = 0;i < b.length ;i++ ){
/*
c[5] = b[0];
c[6] = b[1];
c[7] = b[2];
以此类推
*/
c[i+5] = b[i];
}
4.数组的拆分:
int[] a = {1,3,1,4,5,6,7,8};
//创建两个新的数组
int[] b = new int[a.length / 2];
int[] c = new int[a.length - b.length];
//对新数组元素进行赋值
for (int i = 0; i < b.length ;i++ ){
/*
b[0] = a[0]
b[1] = a[1]
b[2] = a[2]
以此类推
*/
b[i] = a[i];
}
for (int i = 0; i < c.length ;i++ ){
/*
c[0] = a[4]
c[1] = a[5]
c[2] = a[6]
以此类推
*/
c[i] = a[i+b.length];
}
本人会定期发表关于Java的相关知识,如果有错误请指出,觉得好请点赞,收藏加关注,谢谢!!