Java 字符与字符串
文本处理是编程中的一项常见任务。Java 提供了 char 基本类型来表示单个字符,以及一个功能非常强大的 String 类来处理字符序列。
char 类型
char 类型用于存储单个 16 位的 Unicode 字符。它的值必须用单引号 (') 括起来。
String 类
String 是一个引用类型,用于表示一系列字符。它是 Java 中最常用、最重要的类之一。
创建字符串
创建字符串最简单的方式是使用双引号 (")。
字符串的不可变性 (Immutability)
这是 String 类最重要的特性:一旦一个 String 对象被创建,它的值就不能被改变。
当您对一个字符串进行“修改”(如拼接、替换)时,Java 实际上是创建了一个新的 String 对象,而不是在原地修改原始对象。
这种设计使得字符串在多线程环境中是线程安全的,并且可以被安全地用作哈希表的键。
常用 String 方法
String 类提供了大量用于操作字符串的有用方法。以下是一些最常见的:
-
length(): 返回字符串的长度(字符数)。 -
charAt(int index): 返回指定索引位置的char字符。索引从 0 开始。 -
concat(String str): 将指定字符串连接到此字符串的末尾。等同于+操作符。 -
equals(Object anObject): 比较两个字符串的内容是否完全相同(区分大小写)。 -
equalsIgnoreCase(String anotherString): 比较两个字符串的内容是否相同(不区分大小写)。 -
substring(int beginIndex, int endIndex): 返回一个新的字符串,它是此字符串的一个子字符串。包含beginIndex,不包含endIndex。 -
indexOf(String str): 返回指定子字符串在此字符串中第一次出现的索引。如果未找到,则返回 -1。 -
toUpperCase()/toLowerCase(): 返回一个新的字符串,其中所有字符都转换为大写或小写。 -
trim(): 返回一个新的字符串,移除了原始字符串两端的空白字符。 -
replace(char oldChar, char newChar): 返回一个新的字符串,其中所有的oldChar都被newChar替换。 -
split(String regex): 根据给定的正则表达式拆分此字符串,返回一个字符串数组。 -
startsWith(String prefix)/endsWith(String suffix): 测试此字符串是否以指定的前缀开始或后缀结束。 -
isEmpty(): 判断字符串长度是否为 0。从 Java 6 开始提供。 -
isBlank(): 判断字符串是否为空白(长度为 0 或只包含空白字符)。从 Java 11 开始提供。
StringBuilder 和 StringBuffer
由于 String 是不可变的,当需要频繁地修改字符串内容时(例如,在循环中拼接大量字符串),使用 String 会产生大量不必要的中间对象,效率低下。
为了解决这个问题,Java 提供了两个可变的字符串类:
StringBuilder: 非线程安全,但效率更高。是单线程环境下进行字符串修改的首选。StringBuffer: 线程安全,但效率稍低。适用于多线程环境。
它们提供了 append(), insert(), delete(), replace() 等方法来直接修改字符串内容,而不会每次都创建新对象。