92. Java 数字和字符串 - 字符串
在 Java
编程中,字符串是最常用的数据类型之一。字符串表示为一系列字符,是不可变的对象,由 String
类来表示和操作。
一、创建字符串
1.1 使用字符串文字
最直接的创建方式是使用双引号括起的字符串文字。当编译器遇到字符串文字时,会自动创建一个 String
对象。例如:
java
String greeting = "Hello world!";
在这行代码中,"Hello world!
" 就是一个字符串文本,编译器会为它创建一个不可变的 String
对象。
1.2 使用构造函数
我们也可以使用 new
关键字结合 String
构造函数来创建字符串。String
类提供了多达 13
个构造函数,可以通过不同的源来初始化字符串。例如,使用字符数组来构造字符串:
java
char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' };
String helloString = new String(helloArray);
System.out.println(helloString); // 输出: hello.
注意:由于 String
是不可变的,一旦创建后就无法修改。如果看似"修改"字符串的方法实际上都是返回了一个新字符串。
二、字符串的长度与字符访问
2.1 获取字符串长度
String
类提供了 length()
方法,用于获取字符串中字符的个数。例如:
java
String palindrome = "Dot saw I was Tod";
int len = palindrome.length(); // len 为 17
2.2 访问字符串中的字符
使用 charAt(int index)
方法,可以获取字符串中指定位置的字符。注意,字符下标从 0
开始。例如:
java
char firstChar = palindrome.charAt(0); // 'D'
2.3 将字符串转换为字符数组
如果需要对字符串进行逐字符处理(例如反转字符串),可以先将字符串转换为字符数组。有两种常用方法:
方式一:手动循环
java
int len = palindrome.length();
char[] tempCharArray = new char[len];
for (int i = 0; i < len; i++) {
tempCharArray[i] = palindrome.charAt(i);
}
方式二:使用 getChars()
方法
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
方法可以将字符串(或其一部分)复制到目标字符数组中。例如:
java
char[] tempCharArray = new char[len];
palindrome.getChars(0, len, tempCharArray, 0);
2.4 反转字符串示例
下面是一个完整示例,展示如何将字符串反转:
java
public class StringDemo {
public static void main(String[] args) {
String palindrome = "Dot saw I was Tod";
int len = palindrome.length();
char[] tempCharArray = new char[len];
char[] reversedArray = new char[len];
// 使用 getChars() 方法将字符串复制到字符数组中
palindrome.getChars(0, len, tempCharArray, 0);
// 反转字符数组
for (int j = 0; j < len; j++) {
reversedArray[j] = tempCharArray[len - 1 - j];
}
// 创建新的字符串
String reversePalindrome = new String(reversedArray);
System.out.println("反转后的字符串为: " + reversePalindrome);
}
}
运行该程序将输出:
java
doT saw I was toD
三、字符串连接
3.1 使用 concat()
方法
String 类提供了 concat(String str)
方法,用于连接两个字符串,并返回新字符串:
java
String result = "My name is ".concat("Rumplestiltskin");
System.out.println(result); // 输出: My name is Rumplestiltskin
3.2 使用 + 运算符
更常见的是使用 +
运算符进行字符串连接,这种方式在 print
语句中非常直观:
java
String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");
// 输出: Dot saw I was Tod
在连接过程中,如果某个操作数不是 String
类型,Java
会自动调用其 toString()
方法将其转换为字符串。
四、多行字符串
在 Java SE 15
之前,文本字符串不能跨越多行书写,必须使用 +
运算符将每行连接起来;但从 Java SE 15
开始,引入了【文本块】(text blocks
),允许直接书写多行字符串:
java
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
System.out.println(html);
这种方式不仅简洁,而且提高了多行字符串的可读性,特别适用于 HTML
、SQL
或 JSON
等格式。
五、格式化字符串
除了直接拼接字符串外,Java
还提供了格式化字符串的方法,例如 String.format()
。这与 System.out.printf()
类似,只不过返回一个字符串对象而不是直接输出到控制台。例如:
java
String fs = String.format("The value of the float variable is %f, while the value of the integer variable is %d, and the string is %s",
3.14159, 42, "Java");
System.out.println(fs);
输出结果:
java
The value of the float variable is 3.141590, while the value of the integer variable is 42, and the string is Java
总结
- 字符串创建 :可以使用字符串文字或构造函数创建
String
对象;字符串一经创建不可更改。 - 字符串操作 :通过
length()
、charAt()
、getChars()
等方法可以获取字符串信息和操作字符。 - 字符串连接 :可以使用
concat()
方法或 + 运算符进行连接;非String
对象会自动转换为字符串。 - 多行字符串 :从
Java SE 15
开始支持文本块,简化多行字符串的书写。 - 格式化字符串 :利用
String.format()
方法可以生成格式化的字符串,方便重复使用和国际化支持。
通过以上内容和示例,希望大家能够深入理解和灵活运用 Java 中的字符串操作,从而编写出高效且易于维护的代码。