目录
1、基本概念
- 数组是一组类型相同的数据的集合;数组中可以存储多个数据,但是这些数据的类型必须相同;
- 数组能够作为数据的容器使用,把多个数据集中存储;
- 存储在数组中的数据,都有相应的索引值,可以方便获取或修改;
- 当需要同时保存多个类型相同的变量并进行处理时,可以考虑用数组,例如:多个人的成绩、多个员工的薪资……
2、声明创建初始化
- Java的数组本身是**引用数据类型****;**但是可存储基本数据类型,也可存储引用数据类型。
- 数组的两种声明方式、三种创建方式:
int[] a1;
int a2[];
//方式一:声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值。
int[] arr1 = new int[5];
//方式二:声明数组并分配内存,同时将其初始化。arr2的长度为4,元素的值为3,5,1,7
int[] arr2 = new int[]{3,5,1,7};
//方式三:直接赋值,方式二的简化版 arr3的长度为4,元素的值为3,5,1,7
int[] arr3 = {3,5,1,7};
元素类型指的是数组里面存的数据类型。数组在声明后还只是一个空指针,不能使用,必须创建。
3、使用
4、遍历
(1)拷贝数组 System.arraycopy();
public static void test4(){
int[] a={10,100,1000};
int[] b={20,200,2000,20000};
System.arraycopy(a,1,b,2,2);
//(srcPos=1,destPos=2,length=2)
for (int x : b) {
System.out.println(x);
}
}
/*
20
200
100
1000
*/
(2)升序排序 Arrays.sort(arr);
public static void test2(){
int [] arr={20,-20,30,-30,5,-4};
Arrays.sort(arr);
for(int a:arr){
System.out.println(a);
}
}
/*
-30
-20
-4
5
20
30
*/
(3)二分查找 Arrays.binarySearch();
public static void test3(){
int [] arr={20,-20,30,-30,5,-4};
int key=5;
for(int a:arr){
System.out.println(a);
}
//二分查找,前提条件数组要排序
System.out.println(Arrays.binarySearch(arr,key));
}
(4)遍历
public static void test02() {
int[] arr4 = new int[5];
arr4[0] = 20;
arr4[0] = arr4[0] * 10;
System.out.println(arr4[0]);
// System.out.println(arr4);
System.out.println("************************************");
String[] ary = new String[5];
ary[0] = "bjyx";
//ary[2]=2;//数组类型为String
ary[1] = "zsww";
ary[3] = "lsfy";
ary[4] = "bx";
// ary[5]="xb";
// 索引下标越界,编译没有问题,运行不可执行Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
String var = ary[3];
System.out.println(ary.length);
System.out.println(var);
System.out.println("***************for循环******************");
for (int i = 0; i < ary.length; i++) {//数组遍历
System.out.println("ary第" + i + "个位置的值:" + ary[i]);
}
System.out.println("***********增强for遍历***********");
for (String str : ary) {
System.out.println(str);
}
System.out.println("**********使用while循环***********");
int k = 0;
int len = ary.length;
while (k < len) {
System.out.println("第" + k + "位置的值:" + ary[k]);
k++;
}
System.out.println("********倒序遍历(for)***************");
for (int i = ary.length - 1; i >= 0; i--) {
System.out.println("第" + i + "个位置的值:" + ary[i]);
}
System.out.println("******倒序遍历(while)**************");
int m = ary.length - 1;//m为索引,赋值数组索引最大位
while (m >= 0) {
System.out.println("第" + m + "个位置的值:" + ary[m]);
m--;
}
}
5、常见问题
6、多维数组
只有一维数组的长度确定
//循环的一维数组的元素
for(int i = 0;i<a.length;i++) {
//数组的元素也是数组 ,循环的是数组元素的数组
for(int j = 0;j<a[i].length;j++) {
System.out.println(a[i][j]);
}
}