数组是一种引用数据类型,是相同的数据元素的集合
定义:
//声明整形数组arr,包含10个元素.每个元素都是int类型,默认值是0
int[] arr=new int[10];
初始化:--------初始化的是数组中的元素
int[] arr=new int[3];//0,0,0
int[] arr={2,5,8};//2,5,8
int[] arr=new int[]{2,5,80};//2,5,8
int[] arr;
//arr={2,5,8};编译错误,此方式只能声明同时初始化
arr=new int[]{2,5,8}//正确
访问--------访问的是数组的元素
--通过(数组名.length)可以获取数组的长度(元素的个数)
int[] arr=new int[8];//0,0,0,0,0,0,0,0
System.out.println(arr.length);//8
通过下标来访问数组中的元素,下标从0开始,最大到(数组的长度-1)
arr[arr.length-1]是数组中的最后一个元素
int[] arr=new int[3];
arr[0]=100;//给arr中的第一个元素赋值为100
arr[1]=50;//给arr中的第二个元素赋值为50
arr[2]=25;//给arr中的三个元素赋值为25
arr[3]=300;//运行时发生ArrayIndexOutOfBoundsException数组下标越界异常
System.out.println(arr[arr.length-1]);//输出数组中的最后一个元素;arr[2]的值25
遍历/迭代:从头到尾挨个走一遍(for循环)
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){//遍历数组arr
arr[i] =(int)(Math.random()*100);//给每个元素赋值为0到99的随机数
System.out.println(arr[i]);//输出每个元素的值
}
System.out.println("倒着输出")
for(int i=arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
数组的复制
int[] a={10,20,30,40,50};
int[] b=new int[6];//0,0,0,0,0,0
//a:原数组
//1:原数组的起始下标
//2:目标数组
//0:目标数组的起始下标
//4:要复制的元素个数
System.arraycopy(a,1,b,0,4);//灵活性好
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}//20,30,40,50,0,0
int[] c = {10,20,30,40,50};
//c:源数组
//d:目标数组
//6:目标数组的长度(元素个数)
//----若目标数组长度>源数组长度,则末尾补默认值
//----若目标数组长度<源数组长度,则将末尾的截掉
int[] d= Arrays.copyOf(c,6); //灵活性差
for(int i=0;i<d.length;i++){
System.out.println(d[i]);
}//10,20,30,40,50,0
数组的扩容与缩容
int[] a={10,20,30,40,50};
//数组的扩容(创建了一个更大的新的数组,并将数据复制进去)
a=Arrays.copyOf(a,a.length+1);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}//10,20,30,40,50,0
int[] b={10,20,30,40,50};
//数组的缩容
b=Arrays.copyOf(a,a.length-1){
System.out.println(b[i])
}//10,20,30,40
排序
Arrays.sort(arr);//对arr进行升序排列
int[] arr-new int[10];
for(int i=0;i<arr.length;i++){
arr[i] =(int)(Math.random()*100);
System.out.println(arr[i]);
}
Arrays.sort(arr);//对arr进行升序排列
//排列后在进行输出
for(i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
//这个也可以到这输出,输出后的数据没有变化,只是倒着输出,
//就是再一次输出arr数组,还是原来的数值,而不是倒着输出后的数值.