String 是 Java 在 java.lang 中提供的标准字符串类型,不需要额外导入。它会自动管理字符数量和存储空间,是日常文本处理的常用选择。Java 字符串不可变:看起来会修改字符串的操作实际上会返回新字符串。
创建、输入与输出
字符串可以直接用文本初始化,也可以通过赋值修改。scanner.next() 只读取一个单词;需要保留空格时,应使用 scanner.nextLine() 读取整行。
String language = "Java";
String topic = scanner.nextLine();
System.out.println(language + ": " + topic);长度与状态
length() 返回字符数量,结果类型是 int;isEmpty() 判断字符串是否没有字符。它们都不会修改原字符串。
String text = "Leaflet";
System.out.println(text.length()); // 7
System.out.println(text.isEmpty()); // false访问单个字符
charAt(index) 通过从 0 开始的下标访问字符。首字符下标是 0,末字符下标是 text.length() - 1。无效下标会抛出 StringIndexOutOfBoundsException。
String text = "Leaflet";
System.out.println(text.charAt(0)); // L
System.out.println(text.charAt(text.length() - 1)); // t追加与插入
String 对象不能原地修改。可以使用 + 或 concat() 创建新字符串;需要反复追加或插入时,使用可变的 StringBuilder。
String text = "Leaf";
text = text.concat("let"); // Leaflet
text += " course"; // Leaflet course
StringBuilder builder = new StringBuilder(text);
builder.insert(7, " Java"); // Leaflet Java course
text = builder.toString();截取、查找与修改
substring(begin, end) 返回从 begin 开始、到 end 之前结束的新字符串。indexOf(value) 返回第一次匹配的起始位置;找不到时返回 -1。replace(old, replacement) 也会返回新字符串。
String text = "Leaflet course";
String name = text.substring(0, 7); // Leaflet
int position = text.indexOf("course"); // 8
if (position != -1) {
text = text.replace("course", "lab"); // Leaflet lab
}
text = text.substring(0, 7); // LeafletJava String 方法实验台
选择一个方法,观察调用表达式、原字符串是否改变,以及返回值或 StringBuilder 修改后的字符布局。
text.length();返回字符数量,空格也算一个字符。
比较字符串
equals() 和 !equals() 判断内容是否相同;compareTo() 返回负数、0 或正数,分别表示当前字符串排在参数之前、相同或之后。不要使用 == 比较字符串内容。
String first = "apple";
String second = "banana";
if (!first.equals(second) && first.compareTo(second) < 0) {
System.out.println(first + " comes first");
}知识测验
知识测验
知识测验
生成用户名
读取由单个单词组成的名和姓,使用 String 生成用户名“名.姓”,并同时输出用户名长度。
- 使用 Scanner 分别读取 first 和 last。
- 拼接 first + "." + last。
- 输出用户名以及 username.length()。
提取邮箱域名
读取一个邮箱样式字符串,提取 @ 后面的域名;缺少 @ 或域名为空时输出错误。
- 使用 indexOf 查找 @ 的位置。
- 检查返回值是否为 -1,并确认 @ 后还有字符。
- 使用 substring(position + 1) 提取并输出域名。
实现一次文本替换
读取原文本、要查找的片段和替换片段,只替换第一次出现的位置。
- 使用 indexOf 获得第一次匹配的位置。
- 未找到时保持原文本并输出提示。
- 找到时用 substring 组合替换位置前后的内容并输出结果。