一、定义/概念
1.数组是存储同一种数据类型多个元素的集合
2.既可以存储基本数据类型,也可以存储引用数据类型
3.是一连串相关数据的集合,即一连串的变量
二、存储方式
内存空间中划出一连串的相同类型的空间
三、声明方式(数组长度一旦给定就不能修改)
1.数据元素类型 [ ] 数组名 = new 数组元素类型 [ 数组元素个数 ];
int [ ] array = new int [ 5 ];
2.数据元素类型 [ ] 数组名 ={ 元素1 , 元素2 ,元素3 ......};
int [ ] array = { 20 , 19 , 56 , 49 , 45 };
3.数据元素类型 [ ] 数组名 = new 数组元素类型 { 元素1 , 元素2 ,元素3 ......};
int [ ] array = new array { 20 , 19 , 56 , 49 , 45 };
四、数组遍历
数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
}
以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。
for循环遍历方式:
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
foreach遍历方式:
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i : arr) {
System.out.println(i);
}
}
五、数组常见异常、
数组越界异常
数组空指针异常
六、获取最大/最小元素
实现思路:
- 定义变量 max,保存数组0索引上的元素
- 遍历数组,获取出数组中的每个元素
- 将遍历到的元素和保存数组0索引上值的max变量进行比较
- 如果数组元素的值大于了变量的值,变量记录住新的值
- 数组循环遍历结束,变量保存的就是数组中的最大值
public static void main(String[] args) {
int[] arr = { 5, 15, 2000, 10000, 100, 4000 }; //定义变量,保存数组中0索引的元素
int max = arr[0]; //遍历数组,取出每个元素
for (int i = 0; i < arr.length; i++) {
//遍历到的元素和变量max比较
//如果数组元素大于max
if (arr[i] > max) {
//max记录住大值 max = arr[i];
}
}
System.out.println("数组最大值是: " + max);
}
七、冒泡排序
public static void main(String[] args) {
int [] age = {18,22,19,30,21};
int num = 0 ;
for (int i = 0; i < age.length-1; i++) {
for (int j = 0; j < age.length-1-i; j++) {
if (age[j]>age[j+1]){
num = age[j+1];
age[j+1] = age[j];
age [j] = num;
}
}
}
System.out.println(Arrays.toString(age));
}
八、java.util.Arrays工具包的应用
扩容:Arrays.copyOf(数组名 , 数组长度 );
排序:Arrays.sort();
遍历:Arrays.toString();
扩容、位移、插入案例代码:
Scanner in = new Scanner(System.in);
int[] array = {5,1,3,6,9};
//排序
Arrays.sort(array);
System.out.println("排序后的数组" + Arrays.toString(array));
//扩容copyOf
int[] newArray = Arrays.copyOf(array, array.length + 1);
System.out.println("扩容后的数组"+Arrays.toString(newArray));
System.out.println("请输入您要插入的元素");
//新元素
int num = in.nextInt();
//新元素应该在的下标
int index = -1;
//判断num应该往哪里放
for (int i = 0; i < newArray.length; i++) {
if (num < newArray[i]){
index = i;
break;
}else {
index = newArray.length - 1;
}
}
//位移
if (index != newArray.length - 1){
for (int i = newArray.length - 2; i >= index ; i--) {
newArray[i+1] = newArray[i];
}
System.out.println("完成位移之后的数组" + Arrays.toString(newArray));
}
//插入
newArray[index] = num;
System.out.println("把新元素放进去的数组" + Arrays.toString(newArray));
}