【Java学习笔记】SringBuffer类(重点)

StringBuffer(重点)

1. 基本介绍

(1)StringBuffer是可变的字符序列,可以对字符串内容惊醒增删

(2)很多方法喝String相同,但StringBuffer可变长度

(3)StringBuffer是一个容器

(4)StringBuffer是final类,不能被继承

2. 结构关系图

(1) StringBuffer 的直接父类是 AbstractStringBuilder

(2) StringBuffer 实现了 Serializable,即 StringBuffer 的对象可以串行化(即可以在网络中传输)

(3) 在父类中 AbstractStringBuilder 有属性 char[] value, 不是 final

(4)数组的起始大小是 16,如果大于 16 个字符长度,会自动扩容

(5) 该 value 数组存放字符串内容,引出存放在堆中的

(6) 因为 StringBuffer 字符内容是存在 char\[\] value, 所以在变化(增加/删除)时不用每次都更换地址(即不是每次创建新对象),所以效率高于 String


一、StringStringBuffer的相互转换

(1)String--->StringBuffer

方法一:创建StringBuffer对象,调用构造器

方法二:使用append方法

java 复制代码
String str = "jackson";

// 方法一
StringBuffer stringBuffer = new StringBuffer(str);

// 方法二
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);

(2)StringBuffer--->String

方法一:创建String对象,调用构造器

方法二:调用StringBuffer的toString方法

java 复制代码
StringBuffer stringBuffer = new StringBuffer("jackson");

// 方法一
String str1 = stringBuffer.toString();

// 方法二
String str2 = new String(stringBuffer);

二、StringBuffer类的常用方法

方法介绍

增:append("字符串")

复制代码
### 在末尾添加
复制代码
### 可以连续调用

复制代码
### delete(索引 1,索引 2)

*

  ### 索引区间是左闭右开
复制代码
### deleteCharAt(int index)

改:repalce(索引 1,索引 2,字符串)

复制代码
### 索引区间是左闭右开

插:insert(索引,字符串)

翻转:reverse()

截取:substring(索引 1,索引 2)

复制代码
### 索引区间左闭右开

索引

复制代码
### indexOf("字符串"):第一次出现的索引
复制代码
### lastIndexOf("字符串"):最后依一次出现的索引

示例代码

java 复制代码
StringBuffer stringBuffer = new StringBuffer("hello~");

System.out.println("stringBuffer --> " + stringBuffer);

// append
stringBuffer.append("world");
System.out.println("append(\"world\") --> " + stringBuffer);

//delete
stringBuffer.delete(6,11);
System.out.println("delete(6,11) --> " + stringBuffer);

// deleteCharAt()
stringBuffer.deleteCharAt(5);
System.out.println("deleteCharAt(5) --> " + stringBuffer);

// insert()
stringBuffer.insert(5,"~world");
System.out.println("insert(5,\"~world\") --> " + stringBuffer);

// subString()
System.out.println("stringBuffer.substring(5,11) --> " + stringBuffer.substring(5,11));

// replace()
stringBuffer.replace(5,11,"");
System.out.println("replace(5,11,\"\") --> " + stringBuffer);

// indexOf()
System.out.println("indexOf(\"l\") --> " + stringBuffer.indexOf("l"));

// lastIndexOf()
System.out.println("lastIndexOf(\"l\") --> " + stringBuffer.lastIndexOf("l"));

// reverse()
System.out.println("reverse() --> " + stringBuffer.reverse());

输出结果

java 复制代码
stringBuffer --> hello~
append("world") --> hello~world
delete(6,11) --> hello~
deleteCharAt(5) --> hello
insert(5,"~world") --> hello~world
stringBuffer.substring(5,11) --> ~world
replace(5,11,"") --> hello
indexOf("l") --> 2
lastIndexOf("l") --> 3
reverse() --> olleh

三、小练习

题目:价格中小数点前的数字,每三位用逗号隔开

java 复制代码
String price = "8123564.59";
StringBuffer sb = new StringBuffer(price);

// 上面的两步需要做一个循环处理,才是正确的
for (int j = sb.lastIndexOf(".") - 3; j > 0; j -= 3) {
    sb = sb.insert(j, ",");
}

System.out.println(sb);  // 8,123,564.59
相关推荐
维天说1 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
破碎的南瓜1 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
Zane19942 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
你想知道什么?2 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御2 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
谙弆悕博士2 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
噢,我明白了2 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品3 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘3 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts
AOwhisky3 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发