字符串
掌握 String 的创建与核心特性
熟练使用字符串常用方法
理解 String 的不可变性
核心讲解
String是 Java 最常用的引用类型,用来表示字符串。
(1)核心特性:不可变性
String 对象一旦创建,内容就不能修改。所谓的修改字符串,其实是创建了新的字符串对象。
优点:安全、可以共享、常量池优化
缺点:频繁修改会产生大量临时对象,效率低
(2)两种创建方式
直接赋值:
String s = "abc",存在字符串常量池,复用对象new 对象:
String s = new String("abc"),每次都新建对象
(3)常用方法
表格
方法 | 功能 |
|---|---|
| 获取字符串长度 |
| 获取指定位置的字符 |
| 比较字符串内容是否相等 |
| 是否包含指定子串 |
| 截取子串,左闭右开 |
| 查找子串第一次出现的位置 |
| 替换内容 |
| 按分隔符分割成数组 |
| 去除首尾空白 |
| 转大小写 |
(4)StringBuilder
频繁修改字符串用StringBuilder,可变对象,效率高。
append():追加内容insert():插入delete():删除toString():转成 String
代码示例
public class StringDemo {
public static void main(String[] args) {
// 创建字符串
String s1 = "Hello Java";
String s2 = new String("Hello Java");
// 常用方法
System.out.println("长度:" + s1.length());
System.out.println("第2个字符:" + s1.charAt(1)); // e
System.out.println("是否包含Java:" + s1.contains("Java"));
System.out.println("截取2-5位:" + s1.substring(1, 5)); // ello
// 字符串比较
System.out.println("内容相等:" + s1.equals(s2)); // true
System.out.println("对象相同:" + (s1 == s2)); // false
// 分割与替换
String str = "苹果,香蕉,橙子";
String[] fruits = str.split(",");
System.out.println("分割后第一个:" + fruits[0]);
String newStr = str.replace("香蕉", "葡萄");
System.out.println("替换后:" + newStr);
// StringBuilder 频繁修改
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append(i).append("-");
}
System.out.println("StringBuilder结果:" + sb.toString());
}
}
常见误区
用 == 比较字符串内容:== 比较的是对象地址,内容比较必须用
equals()下标越界:charAt、substring 等方法索引超出范围会报 StringIndexOutOfBoundsException
频繁修改用 String:循环拼接字符串用 String,会产生大量垃圾,必须用 StringBuilder
substring 索引记错:第二个参数是结束索引,不是长度,左闭右开
课后练习
定义一个字符串,输出它的长度、第一个字符、最后一个字符
实现:把字符串 "hello world" 转成大写,截取 "world" 子串
用 StringBuilder 拼接 1 到 10 的数字,用逗号分隔
思考:为什么 String 要设计成不可变的?

