欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 【Java学习笔记】SringBuffer类(重点)

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

2025/6/8 11:46:19 来源:https://blog.csdn.net/jackson0607/article/details/148502430  浏览:    关键词:【Java学习笔记】SringBuffer类(重点)

StringBuffer(重点

1. 基本介绍

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

String str = "jackson";// 方法一
StringBuffer stringBuffer = new StringBuffer(str);// 方法二
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);

(2)StringBuffer—>String

StringBuffer stringBuffer = new StringBuffer("jackson");// 方法一
String str1 = stringBuffer.toString();// 方法二
String str2 = new String(stringBuffer);

二、StringBuffer类的常用方法

方法介绍

示例代码

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());

输出结果

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

三、小练习

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词