5.Java 数组(一维数组、二维数组、数组实例实操)
一、数组
1、基本介绍
【数据类型】[] 【数组名】 = new 【数据类型】[【长度】];
【数据类型】[] 【数组名】 = {【元素 1】, 【元素 2】...};
【数据类型】[] 【数组名】 = new 【数据类型】[]{【元素 1】, 【元素 2】...};
-
数组中的元素可以是任何数据元素,包括基本类型和引用类型,但是不能混用
-
数组创建后,如果没有赋值,有默认值
-
使用数组步骤:声明数组并开辟空间 -> 给数组赋值 -> 使用数组
-
数组的下标是从 0 开始的
-
数组的下标必须在指定范围内,否则报下标越界异常
-
数组属于引用数据类型(对象)
2、注意事项
- 数组赋值机制:数组在默认情况下是引用赋值,赋的值是地址
二、二维数组
int[][] arr = {}; // 推荐
int[] arr[] = {};
int arr[][] = {};
- 二维数组实际上由多个一维数组组成,它的各个一维数组的长度可以相同,也可以各不相同
三、实例实操
1、冒泡排序
- BubbleSortTest.java
package com.my.test;
public class BubbleSortTest {
public static void main(String[] args) {
int[] arr = {13, 5, 45, 35, 52};
// 打印原数组
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
// 定义中转变量
int temp = 0;
// 开始冒泡排序
for (int i = 0; i < arr.length - 1; i++) { // 排序轮数,arr.length - 1
for (int j = 0; j < arr.length - i - 1; j++) { // 该轮排序次数,arr.length - i - 1
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 打印冒泡排序后的数组
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
2、数组扩容
- ArrayExpandTest.java
package com.my.test;
public class ArrayExpandTest {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
int[] newArr = new int[arr.length + 1];
// 将 arr 中的数据存入 newArr
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i];
}
// 存入扩容的数据
newArr[arr.length] = 4;
// 让 arr 的地址指向 newArr 的地址
arr = newArr;
// 打印扩容后的数组
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
3、顺序查找
- SequentialSearchTest.java
package com.my.test;
public class SequentialSearchTest {
public static void main(String[] args) {
String[] arr = {"东", "西", "南", "北"};
// 查找元素的下标变量,默认为 -1
int index = -1;
// 查找的元素
String target = "西";
// 开始顺序查找
for(int i = 0; i < arr.length; i++) {
if (target.equals(arr[i])) {
index = i;
break;
}
}
// 判断是否查找到
if (index != -1) {
System.out.println("恭喜你找到了!");
System.out.println("目标元素:" + target + ",下标:" + index);
} else {
System.out.println("该目标元素不存在!");
}
}
}
4、返回数组
- 注意返回数组的定义格式
package com.my.test;
import java.util.Arrays;
public class GetArrayTest {
public static void main(String[] args) {
int[] array1 = getArray1();
int[] array2 = getArray2();
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array2));
}
public static int[] getArray1() {
return new int[]{ 1, 2, 3 };
}
public static int[] getArray2() {
int[] res = { 1, 2, 3 };
return res;
}
}
- 错误的定义格式
public static int[] getArray3() {
return { 1, 2, 3 };
}