Menu
CoddyTech

StringBuffer 简介

本课属于 Coddy Java 学习旅程的“逻辑与流程”单元。第 45 课,共 59 课。

StringBuffer 与 StringBuilder 类似,但它是线程安全的(可同时进行多项操作)。它用于创建可变(可修改)的字符串。

创建一个初始文本为以下内容的 StringBuffer:

StringBuffer sb = new StringBuffer("Hello");

使用 append() 添加更多文本:

sb.append(" World");

运行上面的代码后,sb 中包含:

Hello World

使用 insert() 和 replace() 修改文本:

StringBuffer sb = new StringBuffer("Java");
sb.insert(0, "Hi ");       // 在开头添加内容
sb.replace(0, 2, "Hey");   // 将 "Hi" 替换为 "Hey"

运行上面的代码后,sb 中包含:

Hey Java

要查找某段文本的起始位置,请使用 indexOf()。它会返回第一个匹配项的位置;如果文本不存在,则返回 -1:

StringBuffer sb = new StringBuffer("Hey Java");
int pos = sb.indexOf("Java");   // 4
int none = sb.indexOf("Python"); // -1
challenge icon

挑战

简单

创建一个名为 modifyText 的方法,它接受三个参数:

  1. 要修改的 String(text)
  2. 要查找的 String(target)
  3. 要替换 target 的 String(replacement)

该方法应执行以下操作:

  1. 使用输入文本创建一个 StringBuffer
  2. 将 target 第一次出现的位置替换为 replacement
  3. 在末尾添加一个感叹号
  4. 返回最终字符串

返回消息应为:

  • 如果任何输入为 null:返回 "Invalid input"
  • 如果未找到 target:返回末尾带感叹号的原始文本
  • 如果操作成功:返回修改后的文本

亲手试试

import java.util.Scanner;

public class Main {
    public static String modifyText(String text, String target, String replacement) {
        // 在这里编写你的代码
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String target = scanner.nextLine();
        String replacement = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (target.equals("null")) target = null;
        if (replacement.equals("null")) replacement = null;
        
        System.out.println(modifyText(text, target, replacement));
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Java 在线编译器