这是一个 Java 快速入门项目,非常适合用来练手。相关源码已上传至 GitHub,👉 点击查看 GitHub 仓库。欢迎交流指正、提交 issue。
一、基本概念
Java 中的字符串由 java.lang.String 类表示,是不可变(immutable)对象。这意味着一旦创建,其内容就无法修改。任何看似"修改"的操作(如拼接、截取)都会创建新的 String 对象。
二、不可变性的意义
字符串的不可变性带来了以下核心优势:
- 字符串常量池的基础 --- 允许多个引用安全地共享同一对象
- 线程安全 --- 天然支持多线程并发访问
- 安全性 --- 关键信息(如数据库连接字符串)不会被意外篡改
- hashCode 缓存 --- 只需计算一次,提升哈希表等数据结构的性能
三、字符串的创建
Java 提供了两种主要的字符串创建方式:
1. 字面量方式(推荐)
java
String s1 = "Hello"; // 使用字符串常量池
2. 构造方法方式
java
String s2 = new String("Hello"); // 在堆中创建新对象
注意 :字面量方式会优先使用字符串常量池,而
new String()每次都会创建新对象。
四、常用 API
以下是 String 类最常用的方法:
| 方法 | 说明 | 示例 |
|---|---|---|
length() |
获取字符串长度 | "Hello".length() → 5 |
charAt(int) |
获取指定索引字符 | "Hello".charAt(1) → 'e' |
substring(int, int) |
截取子串 | "Hello".substring(1, 4) → "ell" |
equals(Object) |
比较内容是否相等 | "Hi".equals("Hi") → true |
indexOf(String) |
查找子串首次出现位置 | "Hello".indexOf("ll") → 2 |
trim() |
去除首尾空白字符 | " Hi ".trim() → "Hi" |
toUpperCase() |
转换为大写 | "hello".toUpperCase() → "HELLO" |
split(String) |
按规则分割字符串 | "a,b,c".split(",") → ["a","b","c"] |
完整示例代码
以下是表格中所有方法的完整示例代码:
java
public class StringApiExamples {
public static void main(String[] args) {
// 1. length() 方法示例
String str1 = "Hello";
int len = str1.length();
System.out.println("字符串长度: " + len); // 输出: 5
// 2. charAt(int) 方法示例
String str2 = "Hello";
char ch = str2.charAt(1);
System.out.println("索引1的字符: " + ch); // 输出: e
// 3. substring(int, int) 方法示例
String str3 = "Hello World";
String sub = str3.substring(6, 11);
System.out.println("子串: " + sub); // 输出: World
// 4. equals(Object) 方法示例
String str4 = "Hello";
String str5 = "Hello";
boolean isEqual = str4.equals(str5);
System.out.println("是否相等: " + isEqual); // 输出: true
// 5. indexOf(String) 方法示例
String str6 = "Hello World";
int index = str6.indexOf("World");
System.out.println("子串位置: " + index); // 输出: 6
// 6. trim() 方法示例
String str7 = " Hello World ";
String trimmed = str7.trim();
System.out.println("去除空白后: '" + trimmed + "'"); // 输出: 'Hello World'
// 7. toUpperCase() 方法示例
String str8 = "hello world";
String upper = str8.toUpperCase();
System.out.println("大写: " + upper); // 输出: HELLO WORLD
// 8. split(String) 方法示例
String str9 = "apple,banana,orange";
String[] fruits = str9.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 输出: apple
// banana
// orange
}
}
性能优化建议
字符串拼接 :频繁拼接时,使用 StringBuilder(非线程安全)或 StringBuffer(线程安全),避免产生大量中间 String 对象。
java
// 不推荐:产生多个中间对象
String result = "";
for (int i = 0; i < 100; i++) {
result += i; // 每次循环创建新 String
}
// 推荐:使用 StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {
sb.append(i);
}
String result = sb.toString();