StringBuffer.replace(),会产生新的对象吗

StringBuffer.replace(),会产生新的对象吗
StringBuffer.replace() 和String.replace()有什么区别,分别适用于哪些场景

StringBuffer.replace(),是在原字符串上进行替换,不会产生新对象
String.replace(),会产生新对象(String是不可变字符串)

public StringBuffer replace​(int start, int end, String str):
第一个参数为起始索引,第二个参数为结束索引,第三个参数为新的字符串(即你要替换为什么)(索引含头不含尾)
public String replace​(char oldChar, char newChar):
第一个参数是旧字符,第二个参数是新字符

还有一个重载的方法:

public String replace​(CharSequence target, CharSequence replacement):
第一个参数是旧字符序列(即旧字符串),第二个参数是新字符序列(即新字符串)
StringBuffer stringBuffer = new StringBuffer("hello, world");
StringBuffer sb = stringBuffer.replace(0, 5, "HELLO");
System.out.println("sb = " + sb);   // sb = HELLO, world
System.out.println("stringBuffer = " + stringBuffer);   // stringBuffer = HELLO, world
String str = "hello, world";
String s = str.replace("hello", "HELLO");
System.out.println("str = " + str); // str = hello, world
System.out.println("s = " + s); // s = HELLO, world

debug了解一下?