Java 是世界上最流行的编程语言之一,是任何 Web 和应用开发专业人士工具箱中的重要组成部分。
Java 有许多组件和概念需要理解,本文将重点讨论 Java 中的数组。
数组是 Java 编程中一个简单但至关重要的概念。
无论你是经验丰富的程序员还是初学者,在 Java 编程的各个方面都不可避免地会使用到数组。
什么是 Java 数组?
数组是一种数据结构,用于存储同质元素。这意味着数组中的所有元素都是同一数据类型。例如:

int[] numbers = {40, 55, 23, 87, 21, 11, 94};
这是一个包含七个元素的数组。所有元素都是整数,因此是同质的。数组下方的绿色框称为索引,索引总是从零开始,到 n-1 结束。在这个例子中,有七个元素,所以索引是从零到六。数组有三个主要特征:
- 动态分配:数组的内存是动态创建的,这减少了代码所需的存储空间。
- 单一名称存储元素:所有元素都存储在一个名称下。这个名称在使用数组时始终使用。
- 连续位置存储:数组中的元素存储在相邻的位置,这使得用户可以轻松找到元素的位置。
Java 数组的优点
- 随机访问:借助索引,可以随机访问任何元素。
- 管理大数据集:易于存储和操作大型数据集。
Java 数组的缺点
- 固定大小:一旦声明,数组的大小不能增加或减少。
- 同质数据:Java 数组只能存储同一类型的原始数据。
定义和声明 Java 数组
定义数组
数组的定义语法如下:
type varName[];
其中 type 可以是 int、String、double、long 等,varName 是数组的变量名。
声明数组
声明数组有两种方式:
-
声明并初始化:
int[] arr = {1, 2, 3, 4, 5}; -
先声明后初始化:
int[] arr; arr = new int[5]; arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5;
访问数组元素
使用 for 循环打印数组元素:
public class Main {
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]);
}
}
}
输出:
1
2
3
4
5
Java 数组类型
在 Java 中,数组是一种基本的数据结构,用于存储相同类型的元素集合。根据维度的不同,Java 数组可以分为以下几种类型:
1. 一维数组
一维数组是最简单的数组类型,也称为线性数组。它将元素存储在一列中,每个元素都有一个唯一的索引,索引从 0 开始。
定义和声明
int[] numbers; // 声明一个整数数组
numbers = new int[5]; // 分配内存,数组大小为 5
初始化
int[] numbers = {1, 2, 3, 4, 5}; // 声明并初始化
访问元素
int firstElement = numbers[0]; // 访问第一个元素
int lastElement = numbers[numbers.length - 1]; // 访问最后一个元素
示例代码
public class OneDimensionalArrayExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}
输出:
1
2
3
4
5
2. 二维数组
二维数组是包含多个一维数组的数组,通常用于表示表格数据。每个元素都有两个索引,分别表示行和列。
定义和声明
int[][] matrix; // 声明一个二维整数数组
matrix = new int[3][3]; // 分配内存,3 行 3 列
初始化
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
访问元素
int firstElement = matrix[0][0]; // 访问第一行第一列的元素
int lastElement = matrix[2][2]; // 访问最后一行最后一列的元素
示例代码
public class TwoDimensionalArrayExample {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
输出:
1 2 3
4 5 6
7 8 9
3. 多维数组
多维数组是包含多个二维数组的数组,可以扩展到任意维度。常见的多维数组有三维数组,用于表示立方体数据。
定义和声明
int[][][] cube; // 声明一个三维整数数组
cube = new int[2][3][4]; // 分配内存,2 层 3 行 4 列
初始化
int[][][] cube = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
访问元素
int firstElement = cube[0][0][0]; // 访问第一层第一行第一列的元素
int lastElement = cube[1][2][3]; // 访问第二层第三行第四列的元素
示例代码
public class MultiDimensionalArrayExample {
public static void main(String[] args) {
int[][][] cube = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
for (int i = 0; i < cube.length; i++) {
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
System.out.print(cube[i][j][k] + " ");
}
System.out.println();
}
System.out.println();
}
}
}
输出:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
21 22 23 24
总结
- 一维数组:最简单的数组类型,元素存储在一列中。
- 二维数组:包含多个一维数组,用于表示表格数据。
- 多维数组:包含多个二维数组,可以扩展到任意维度,用于表示复杂的数据结构。
通过理解这些不同类型的数组,你可以更灵活地在 Java 中管理和操作数据。希望这些示例代码能帮助你更好地掌握 Java 数组的使用。
数组操作示例
1. 数组求和
public class SumArray {
public static void main(String[] args) {
int[] myArray = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < myArray.length; i++) {
sum += myArray[i];
}
System.out.println("Sum: " + sum);
}
}
输出:
Sum: 15
2. 数组乘积
public class MultiplyArray {
public static void main(String[] args) {
int[] myArray = {1, 2, 3, 4, 5};
int product = 1;
for (int i = 0; i < myArray.length; i++) {
product *= myArray[i];
}
System.out.println("Product: " + product);
}
}
输出:
Product: 120
3. 数组复制
import java.util.Arrays;
public class CopyArray {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int[] b = Arrays.copyOf(a, a.length);
System.out.println(Arrays.toString(b));
}
}
输出:
[1, 2, 3, 4, 5]
4. 数组克隆
public class CloneArray {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int[] b = a.clone();
System.out.println(Arrays.toString(b));
}
}
输出:
[1, 2, 3, 4, 5]
5. 二分查找
二分查找算法用于在数组中查找元素。数组必须按升序排列。算法将数组分成两半,比较目标值和中间值。如果目标值小于中间值,则在较低的一半中继续查找;否则,在较高的一半中继续查找。
import java.util.Scanner;
public class BinarySearch {
public static int binarySearch(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of elements: ");
int n = scanner.nextInt();
int[] arr = new int[n];
System.out.println("Enter " + n + " elements in ascending order:");
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
System.out.print("Enter the element to search: ");
int key = scanner.nextInt();
int result = binarySearch(arr, key);
if (result == -1) {
System.out.println("Element not found.");
} else {
System.out.println("Element found at index: " + result);
}
}
}
输出示例:
Enter the number of elements: 7
Enter 7 elements in ascending order:
1 3 5 7 9 11 13
Enter the element to search: 11
Element found at index: 5
总结
1. 基本概念
- 数组定义:数组是一种基本的数据结构,用于存储相同类型的元素集合。数组中的元素是同质的,即所有元素都是同一数据类型。
- 索引:数组的索引从 0 开始,到 n-1 结束,其中 n 是数组的长度。
- 不可变性:数组的大小在创建时确定,之后不能改变。但是,数组中的元素值可以改变。
2. 数组的特点
- 动态分配:数组的内存是在运行时动态分配的。
- 单一名称存储元素:所有元素都存储在一个名称下,通过索引访问。
- 连续位置存储:数组中的元素存储在连续的内存位置,这使得访问元素非常高效。
3. 数组的类型
- 一维数组:最简单的数组类型,元素存储在一列中。
- 二维数组:包含多个一维数组,通常用于表示表格数据。
- 多维数组:包含多个二维数组,可以扩展到任意维度,用于表示复杂的数据结构。
4. 数组操作
-
求和:
int sum = 0; for (int i = 0; i < numbers.length; i++) { sum += numbers[i]; } System.out.println("Sum: " + sum); -
乘积:
int product = 1; for (int i = 0; i < numbers.length; i++) { product *= numbers[i]; } System.out.println("Product: " + product); -
复制数组:
int[] b = Arrays.copyOf(numbers, numbers.length); System.out.println(Arrays.toString(b)); -
克隆数组:
int[] b = numbers.clone(); System.out.println(Arrays.toString(b)); -
二分查找:
5. 优点和缺点
-
优点:
- 随机访问:通过索引可以快速访问任何元素。
- 高效管理数据:适合存储和管理大量同类型数据。
-
缺点:
- 固定大小:一旦声明,数组的大小不能改变。
- 同质数据:只能存储同一类型的元素。
通过本文,你应该对 Java 数组有了全面的理解,包括如何声明、初始化、访问和修改数组元素,以及如何遍历和操作数组。数组是 Java 编程中非常基础且重要的概念,掌握好数组的使用对于编写高效的 Java 程序至关重要。希望这些内容能帮助你在实际开发中更好地利用 Java 数组。
982

被折叠的 条评论
为什么被折叠?



