Character Array in Java

2025 年 3 月 28 日 | 阅读 6 分钟

Java 中的字符数组 是一个包含字符数据类型值的数组。在 Java 编程中,与 C 不同,字符数组与字符串数组不同,字符串和字符数组都不能以 NULL 字符终止。

Java 语言在字符数组、字符串和 StringBuffer 类中使用 UTF-16 表示。

字符数组在 Java 中非常有用。它非常高效且速度更快。数据可以在没有任何内存分配的情况下进行操作。

在 Java 中,字符串是不可变的。这意味着一旦创建,我们就无法更改其内部状态。但是,字符数组允许我们在创建后进行操作,即使是 List 和 Set 等数据结构也是可以接受的。

Java 中的字符是什么?

在 Java 中,字符是原始数据类型。 char 关键字 用于声明变量和方法的字符类型。char 数据类型的默认值为 '\u0000'。字符值用单引号括起来。其默认大小为 2 字节。

char 数据类型可以存储以下值

  • 任何字母 (A-Z 或 a-z)
  • 0 到 65,535 之间的数字(含)
  • 特殊字符 (@, #, $, %, ^, &, *, (, ), ¢, £, ¥)
  • 16 位 Unicode 字符。

常见用例

字符数组在各种场景中都有应用,包括

  • 字符串操作:由于其可变性,许多字符串操作算法都在字符数组上进行操作。
  • 输入/输出处理:字符数组通常用于读写操作,尤其是在处理字符数据流时。
  • 解析和分词:在解析文本数据或将其分解为标记时,通常使用字符数组进行高效处理。
  • 性能优化:在性能关键型应用程序中,使用字符数组比字符串操作能提供更好的性能,因为内存开销和可变性较低。

如何声明字符数组?

我们可以使用 char 关键字和方括号来声明字符数组。字符数组可以声明如下

我们也可以将方括号放在语句的末尾

声明后,下一步是初始化。让我们了解如何初始化字符数组

如何初始化字符数组?

我们可以使用初始容量初始化字符数组。例如,要分配大小为 5 的实例,请如下初始化

值将按如下方式分配给此数组

我们可以在字符数组上执行许多有用的操作,例如排序、循环、转换为字符串等等。

字符数组中的循环

我们可以使用 for 循环遍历字符数组中的值。

考虑下面的示例

CharArrayDemo.java

输出

a
b
c
d
e

我们也可以这样迭代

CharArrayDemo1.java

输出

a
b
c
d
e

我们观察到两个程序产生相同的输出。因此,我们可以使用上述任何一种实现方法来迭代字符数组。

对字符数组进行排序

Arrays.sort() 方法用于对数组进行排序。考虑以下演示相同内容的 Java 程序。

CharArrayDemo2.java

输出

[a, b, c, d, e]

在上面的示例中,我们可以看到数组值以排序顺序打印。默认情况下,它将按升序排序。

查找字符数组的长度

我们可以使用以下语法计算数组的长度。

请看以下示例。

CharArrayDemo3.java

输出

6

上面的 Java 程序查找指定数组的长度。

如何将字符串数组转换为字符数组?

我们可以使用 toCharArray() 方法轻松地将字符串数组转换为字符数组。这是将字符串字段转换为字符字段的最简单方法。

请看以下示例

文件名:CharArrayDemo4.java

输出

J
a
v
a
T
P
o
i
n
t

上面的 Java 程序将字符串转换为字符数组。

关于 Java 字符数组的其他要点

1. 拼接:可以使用 + 运算符或使用 System.arraycopy() 方法进行更有效的拼接来拼接字符数组。

文件名:ConcatenationDemo.java

输出

Concatenated Array: [a, b, c, d, e, f]

2. 搜索:我们可以使用各种技术,例如线性搜索或更有效的算法(如二分搜索用于已排序的数组),在字符数组中搜索特定字符或字符序列。

文件名:SearchDemo.java

输出

Character found in the array.

3. 子数组:我们可以使用 Arrays.copyOfRange() 方法或通过手动复制元素从字符数组中提取子数组。

文件名:SubarrayDemo.java

输出

Subarray: [b, c]

4. 转换为原始数据类型:您可以使用类型转换将字符数组中的单个字符转换为相应的原始数据类型。

文件名:ConversionDemo.java

输出

Converted Value: 1

5. 性能考虑:虽然字符数组提供了可变性和效率,但过度的操作可能会导致性能开销。在处理字符数组时,平衡可读性和性能至关重要。

结论

Java 中的字符数组提供了一种灵活高效的处理字符序列的方法。与字符串不同,字符数组是可变的,允许直接操作其内容。它们在字符串处理算法、输入/输出处理和数据解析等各种领域都有应用。通过理解它们的初始化、操作和相关操作,Java 开发人员可以有效地利用字符数组来构建健壮且优化的应用程序。