当前位置: 首页 > news >正文

【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

相关文章:

  • compose 组件 ---无ui组件
  • Oracle 审计参数:AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS
  • Redis Key过期策略
  • Python绘制三十六计
  • Python Robot Framework【自动化测试框架】简介
  • # STM32F103 SD卡读写程序
  • Egg.js框架的基本介绍与用法,以及如何连接数据库并对数据库进行增删改查
  • 使用Caddy在Ubuntu 22.04上配置HTTPS反向代理
  • Python爬虫实战:研究Hyper 相关技术
  • 华为云Astro中服务编排、自定义模型,页面表格之间有什么关系?如何连接起来?如何操作?
  • 【CSS-4】掌握CSS文字样式:从基础到高级技巧
  • 容器安全最佳实践:云原生环境下的零信任架构实施
  • 微服务架构-分布式任务调度
  • 《探秘跨网段局域网IP广播:解锁网络通信的新姿势》
  • 开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例
  • 【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项
  • Vue3+Element Plus表单验证实战:从零实现用户管理
  • 数据导入技术(文档加载)
  • LabVIEW音频测试分析
  • can转Profinet网关转换:S7-1200PLC与施耐德变频器间的通信实现
  • 涟水做网站/seo日常优化内容是什么
  • 制作网站详细步骤/企业营销型网站建设
  • php动态网站开发环境/百度网盘客服
  • 芜湖网站优化公司/小说推广平台有哪些
  • 网站建设网上售票系统/福建seo顾问
  • 建湖哪家专业做网站/无锡今日头条新闻