一维数组
1.一组有着相同的数据类型的数的集合(容器)
特性:1.是引用类型
2.长度有限
3.数组是一块连续的内存空间,读取速度快
4.数组元素的类型可以使任意类型。
5.数组的索引是从0开始
声明数组方式:
int[] array; //一个以array的数组
int array[]; //两种等价,下一种不推荐使用
//定义一个长度为6的数组。
int[] array = new int[6];
//在定义的时候直接赋值,有几个值,长度就为几,这种很少使用
int[] array = new int[]{1,2,4,5,6,7};
//在定义的时候直接赋值,有几个值,长度就为几。
int[] array = {1,2,4,5,6,7};
增强for循环(可用于循环遍历出数组的元素)
增强型for循环:
for(数据类型 名字 : 循环的变量){ }
eg:
int[] arr = {1,2,3,5,6,7,9};
for (int a : arr){
System.out.println(a);
}
如何建一个数字复制给另一个数组呢?且数组1修改不对数组2产生影响。
如何将一个数组赋值给另一个数组?
int[] arr1 = {10,23,43,54,66}
int[] arr2 = arr1;
这种方式只是将数组arr1的引用地址付给了arr2,arr1与arr2在堆空间其实指向一个数组,并没有将元素真的给他,若修改arr1,arr2也会被修改。
只能通过循环将arr1的值赋给arr2,这样修改arr1,arr2也不会受到影响 Arrays.copyOf()方法可以达到效果
int[] arr1 = {10,23,43,54,66}
int[] arr2 = new int[arr1.length];
for(int i = 0;i < arr1.length;i++){
arr2[i] = arr1[i];
}
1.循环遍历赋值法
/**
* 数组元素的复制
*/
public static void arrDemo3() {
int a = 10;
// 引用类型至少占2块内存
int[] arr1 = {10, 20, 30, 40, 50};
// 数组的复制 引用的复制 改动arr1 arr2 跟着改变
/* int[] arr2 = arr1;
arr1[1] = 2;*/
int[] arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
arr1[1] = 2;
System.out.println(Arrays.toString(arr2));
// String[] strs = {"a", "bb", "cc", "dd"};
}
2.使用Arrays.copy()方法
//将arr1复制给arr2 ,修改arr1,arr2不会改变
int[] arr1 = {10,43,54,65,76};
int[] arr2 = Arrays.copyOf(arr1,arr1.length);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
//比较arr1 arr2 结果是true
System.out.println(Arrays.equals(arr1,arr2));
//修改arr1
arr1[3] = 9;
System.out.println("=====================");
System.out.println("数组arr1"+Arrays.toString(arr1));
System.out.println("数组arr2"+Arrays.toString(arr2));
Arrays.toString(数组名) //打印数组
Arrays.equals(arr1,arr2); 比较的是两个数组里面的值是否相等
Arrays.sort(arr); 按自然顺序对数组进行排序(从小到大,int String都可以使用)
Arrays.copyOf() (源数组,新数组长度); 复制数组元素
Arrays.copyOf() 不仅可以复制目标数组,还可以扩充目标数组![在这里插入图片描述](https://img-
数组的异常
报错是因为数组的索引范围超出数组的长度导致
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
两个数组比较
Array.equals(arr1,arr2);
比较的是两个数组的元素是否相同
(arr1 == arr2)
比较的是两个数组的内存空间地址