Java 字符串数组

2025年5月2日 | 阅读 9 分钟

数组是 Java 中一个基本且常用的数据结构。由于其高效性和生产力,它被程序员广泛使用;数组是相同数据类型元素的集合。它使用连续的内存位置来存储元素。

什么是字符串数组?

字符串数组是固定数量字符串值的数组。字符串是字符序列。通常,字符串是一个不可变对象,这意味着字符串的值不能被改变。字符串数组的工作方式与其他数据类型的数组类似。

与数组类似,字符串数组也只能存储固定数量的元素。它是一个基于索引的数据结构,从第 0 位开始。第一个元素位于索引 0,第二个元素位于索引 1,依此类推。

Java 中的 main 方法 {Public static void main[ String [] args]; } 本身也是一个字符串数组。

请考虑以下关于字符串数组的要点

  • 它是数组的一个对象。
  • 可以通过两种方法声明它;通过指定大小或不指定大小。
  • 可以在声明时初始化,也可以在声明后填充值。
  • 可以在声明字符串数组后向其中添加元素。
  • 可以使用 for 循环迭代字符串数组。
  • 可以在字符串数组上执行查找和排序操作。

声明

数组声明有两种类型,我们可以指定数组的大小,也可以不指定数组的大小。字符串数组可以声明如下

声明数组的另一种方式是String strArray[],但上述方法更有效且推荐使用。

初始化

字符串数组可以轻松初始化。下面是字符串数组的初始化

以上所有三种方法都用于初始化字符串数组,并且具有相同的值。

第 3 种方法是固定大小方法。在这种方法中,如果我们想访问上面数组中索引 2 以外的元素,可以使用 ( arraylength - 1) 公式找到索引的值。否则,它将抛出 Java.lang.ArrayIndexOutOfBoundsException 异常。

让我们看一个字符串数组的例子来演示它的行为

迭代字符串数组

可以使用 for 和 foreach 循环迭代字符串数组。考虑以下代码

向字符串数组添加元素

我们可以像其他数据类型一样轻松地向字符串数组添加元素。可以通过以下三种方法完成

  • 使用预分配数组
  • 使用 ArrayList
  • 通过创建新数组

让我们来理解以上方法

使用预分配数组

在此方法中,我们已经有一个较大尺寸的数组。例如,如果我们想存储 10 个元素,那么我们将创建一个大小为 20 的数组。这是扩展数组元素的最简单方法。

考虑以下向预分配数组添加元素的示例。

输出

Original Array Elements:[A, B, C, D, E, null, null]
Array after adding two elements:[A, B, C, D, E, F, G]

从上面的例子中,我们向预分配的数组添加了两个元素。

使用 ArrayList

ArrayListJava 集合框架中一个令人着迷的数据结构。我们可以使用 ArrayList 作为中间数据结构轻松地向 String 数组添加元素。

请考虑以下示例,了解如何使用 ArrayList 向 字符串数组添加元素

文件名:StringArrayDemo1.java

输出

Initial Array:
[A, B, C, D, E, F]
Array with added value: 
[A, B, C, D, E, F, G]

通过创建新数组

在此方法中,我们将创建一个比初始数组尺寸更大的新数组,并将其中的元素容纳进去。我们将所有元素复制到新添加的数组中。考虑以下示例

文件名:StringArrayDemo2.java

输出

Initial Array: [A, B, C]
updated Array: [A, B, C, D]

这就是向字符串数组添加元素的方法。让我们看看如何在字符串数组中查找和排序元素。

字符串数组中的查找

要从字符串数组中查找字符串,可以使用 for 循环。考虑以下示例

StringArrayExample.java

输出

Sam String is found at index 1

在上面的示例中,我们将一个布尔变量 x 初始化为 false,并将一个索引变量用于迭代字符串。此外,我们还声明了一个局部变量 String 变量 s 以供搜索。在这里,break 关键字将在找到字符串后立即退出循环。

字符串数组中的排序

字符串数组的排序非常简单。它像传统数组一样进行。我们使用 sort() 方法对数组元素进行排序。排序比查找容易。

考虑以下 对字符串数组进行排序 的示例

文件名:StringArraySorting.java

输出

Entered Sports: [Cricket, Basketball, Football, Badminton, Tennis]
Sorted Sports: [Badminton, Basketball, Cricket, Football, Tennis]

从上面的例子中,我们可以看到字符串数组的元素是使用 sort() 方法排序的。

我们还可以将字符串数组转换为 List、int 数组、ArrayList 等其他数据结构,反之亦然。

操作字符串数组

字符串数组支持各种操作进行处理,包括添加、删除和修改元素。但是,请记住,Java 中的数组一旦初始化,大小就是固定的。因此,要执行动态操作(如添加或删除元素),您可能需要求助于 ArrayList 等其他数据结构。

常见用例

字符串数组在 Java 编程的众多场景中都有应用。一些常见用例包括

  • 存储和处理数据: 字符串数组通常用于存储和处理字符串列表,例如姓名、地址或任何文本数据。
  • 命令行参数: 在 Java 应用程序中,字符串数组用于处理传递给 main() 方法的命令行参数。
  • 数据结构: 字符串数组是实现更复杂数据结构(如堆栈、队列和哈希表)的构建块。

结论

总之,Java 中的字符串数组提供了一种管理文本数据集合的通用方法。了解它们的语法、初始化、操作和常见用例对于任何 Java 开发人员都至关重要。掌握这些知识,您就可以在 Java 项目中利用字符串数组的强大功能,提高编程效率和生产力。


Java 中的字符串数组 MCQ

1. 以下关于 Java 中字符串数组初始化的说法,哪项是正确的?

  1. 字符串数组只能在声明时初始化。
  2. 字符串数组创建后不能调整大小。
  3. 字符串数组可以存储基本类型和对象类型。
  4. 字符串数组可以在不指定大小的情况下声明和初始化。
 

答案:D)

解释: Java 中的字符串数组可以内联初始化,而无需指定大小,如 String[] strAr2 = {"Ani", "Sam", "Joe"}; 所示。与基本类型不同,字符串数组只能存储 String 类的对象。


2. 在 Java 中,将字符串数组转换为 ArrayList 使用哪种方法?

  1. Arrays.toList()
  2. Arrays.asList()
  3. ArrayList.toArray()
  4. List.asArray()
 

答案:B)

解释: Arrays.asList() 方法用于将字符串数组转换为 List(特别是 ArrayList)。此方法接受一个数组并返回一个由指定数组支持的固定大小的列表。


3. 以下代码片段的输出是什么?

  1. Ani, Sam, Joe
  2. [Ani, Sam, Joe]
  3. {Ani, Sam, Joe}
  4. (Ani, Sam, Joe)
 

答案:B)

解释: Arrays.toString() 方法返回数组的字符串表示形式,元素用方括号括起来,并用逗号分隔。因此,输出是 [Ani, Sam, Joe]。


4. 当在字符串数组上使用 Arrays.sort() 方法时,默认如何对元素进行排序?

  1. 按反向字典顺序
  2. 按长度
  3. 按字典顺序(字母顺序)
  4. 按哈希码值
 

答案:C)

解释: Arrays.sort() 方法默认按字典顺序(字母顺序)对字符串数组元素进行排序。这意味着字符串是根据其字符的 Unicode 值进行排序的。


5. 以下关于字符串数组中元素搜索的说法,哪项是正确的?

  1. Arrays.binarySearch() 方法可以在任何未排序的字符串数组上使用。
  2. 在未排序的字符串数组中使用 Arrays.binarySearch() 进行搜索将返回正确的索引。
  3. 必须使用 for 循环来搜索未排序字符串数组中的元素。
  4. 初始化后的字符串数组无法搜索。
 

答案:C)

解释: Arrays.binarySearch() 方法要求数组已排序才能返回正确的索引。对于未排序的数组,通常使用 for 循环通过迭代数组来手动搜索元素。