5.1 字符串

字符串是我们在编程中最常用的数据类型之一,就像我们日常生活中的文字一样重要。无论是显示用户姓名、处理用户输入,还是生成报告,都离不开字符串操作。
这节课我们将学习:
- 如何创建和初始化字符串
- 字符串的各种实用操作方法
- 在实际编程中如何灵活运用这些技巧
通过本节学习,你将掌握:
- 字符串创建 - 掌握多种字符串初始化方法
- 字符串操作 - 学会查找、替换、转换等常用操作
- 实际应用 - 能够处理真实的文本数据需求
- 代码优化 - 了解字符串操作的最佳实践
任务一:字符串的创建与初始化
在Java中,有多种方式可以创建字符串。就像有不同方式可以获得一本书一样(买新书、借书、复印等),创建字符串也有不同的方法。
方式一:直接赋值(最常用)
String name = "张三";
String greeting = "你好,世界!";
方式二:使用 new 关键字
String name = new String("张三");
String greeting = new String("你好,世界!");
方式三:从字符数组创建
char[] chars = {'J', 'a', 'v', 'a'};
String word = new String(chars);

任务二:字符串的常用操作
2.1 位置相关操作:在文字中"定位"
就像在一本书中查找特定的字或页码一样,我们也需要在字符串中进行各种定位操作。
length()
- 获取字符串长度
String text = "Hello World";
int len = text.length(); // 结果:11
charAt(index)
- 获取指定位置的字符
String text = "Hello";
char ch = text.charAt(0); // 结果:'H'(第0个位置)
char ch2 = text.charAt(4); // 结果:'o'(第4个位置)
indexOf(字符)
- 查找字符第一次出现的位置
String text = "Hello World";
int pos = text.indexOf('o'); // 结果:4(第一个'o'的位置)
lastIndexOf(字符)
- 查找字符最后一次出现的位置
String text = "Hello World";
int pos = text.lastIndexOf('o'); // 结果:7(最后一个'o'的位置)

字符串的位置编号从 0 开始,不是从 1 开始!
- “Hello” 中,‘H’ 在位置 0,’e’ 在位置 1,以此类推
- 如果找不到指定字符,
indexOf()
会返回 -1
2.2 转换操作:改变文字的"形态"
有时候我们需要把文字转换成不同的形式,比如全部大写、全部小写,或者转换成字符数组进行更复杂的操作。
toUpperCase()
- 转换为大写
String text = "Hello World";
String upper = text.toUpperCase(); // 结果:"HELLO WORLD"
toLowerCase()
- 转换为小写
String text = "Hello World";
String lower = text.toLowerCase(); // 结果:"hello world"
toCharArray()
- 转换为字符数组
String text = "Hello";
char[] chars = text.toCharArray(); // 结果:['H', 'e', 'l', 'l', 'o']

- 大小写转换:处理用户输入时,统一转换为小写进行比较
- 字符数组:需要对字符串进行复杂操作时,转换为数组更方便
- 数据清理:标准化文本格式,便于后续处理
2.3 清理操作:让文字更"干净"
在处理用户输入或文件数据时,经常需要清理文字内容,比如去掉多余的空格或替换某些字符。
trim()
- 去除首尾空格
String text = " Hello World ";
String cleaned = text.trim(); // 结果:"Hello World"
replace(旧字符, 新字符)
- 替换字符
String text = "Hello World";
String replaced = text.replace('o', 'a'); // 结果:"Hella Warld"
replace(旧字符串, 新字符串)
- 替换字符串
String text = "Hello World";
String replaced = text.replace("World", "Java"); // 结果:"Hello Java"
- 数据清理:处理用户输入时去除意外的空格
- 文本标准化:将特殊字符替换为标准格式
- 敏感词过滤:将不当内容替换为星号等
2.4 判断操作:检查文字的"特征"
有时候我们需要检查字符串是否符合某些条件,比如是否为空、是否包含特定内容等。
isEmpty()
- 判断是否为空
String text = "";
boolean empty = text.isEmpty(); // 结果:true
String text2 = "Hello";
boolean empty2 = text2.isEmpty(); // 结果:false
startsWith(前缀)
- 判断是否以指定字符串开始
String text = "Hello World";
boolean starts = text.startsWith("Hello"); // 结果:true
boolean starts2 = text.startsWith("World"); // 结果:false
endsWith(后缀)
- 判断是否以指定字符串结束
String text = "Hello World";
boolean ends = text.endsWith("World"); // 结果:true
boolean ends2 = text.endsWith("Hello"); // 结果:false
contains(子字符串)
- 判断是否包含指定内容
String text = "Hello World";
boolean contains = text.contains("lo Wo"); // 结果:true
boolean contains2 = text.contains("Java"); // 结果:false
- 文件类型判断:检查文件名是否以 “.jpg” 结尾
- 输入验证:检查邮箱是否包含 “@” 符号
- 条件筛选:从列表中找出以特定字母开头的姓名
- 空值检查:确保用户输入不为空
2.5 分割操作:把文字"切开"处理
有时候我们需要从长字符串中提取部分内容,或者把一个字符串按照某种规则分成多个部分。
substring(起始位置)
- 从指定位置截取到末尾
String text = "Hello World";
String sub = text.substring(6); // 结果:"World"
substring(起始位置, 结束位置)
- 截取指定范围
String text = "Hello World";
String sub = text.substring(0, 5); // 结果:"Hello"
String sub2 = text.substring(6, 11); // 结果:"World"
split(分隔符)
- 按指定字符分割成数组
String text = "苹果,香蕉,橙子";
String[] fruits = text.split(",");
// 结果:["苹果", "香蕉", "橙子"]
String sentence = "Java is great";
String[] words = sentence.split(" ");
// 结果:["Java", "is", "great"]
- 提取信息:从 “张三_18_男” 中提取姓名、年龄、性别
- 处理路径:从文件路径中提取文件名
- 数据解析:处理CSV格式的数据文件
- 用户输入处理:分析用户输入的命令和参数
综合练习
任务:制作一个简单的文本处理器
要求:
- 创建一个包含你姓名的字符串
- 检查姓名长度,如果超过3个字符就截取前3个
- 将姓名转换为大写
- 判断姓名是否包含特定字符
- 输出所有处理结果
参考代码框架:
public class TextProcessor {
public static void main(String[] args) {
String name = "你的姓名";
// 在这里完成练习任务
System.out.println("原始姓名:" + name);
System.out.println("姓名长度:" + name.length());
// ... 继续完成其他任务
}
}
学习小结
✅ 字符串创建 - 掌握了多种初始化方法
✅ 位置操作 - 学会查找和定位字符
✅ 转换操作 - 能够改变字符串格式
✅ 清理操作 - 会处理和美化文本内容
✅ 判断操作 - 能够检查字符串特征
✅ 分割操作 - 学会提取和分解文本
现在你已经掌握了字符串操作的核心技能!