当前位置: 首页 > 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
http://www.lqws.cn/news/196993.html

相关文章:

  • Redis专题-基础篇
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)
  • C++课设:简易科学计算器(支持+-*/、sin、cos、tan、log等科学函数)
  • DDPM优化目标公式推导
  • 【生活】程序员防猝si指南
  • Linux 系统中使用 VBScript(Visual Basic Script)wine安装vbs
  • 移除元素-JavaScript【算法学习day.04】
  • 对比学习
  • Python实例题:Python计算线性代数
  • 使用Conda管理服务器多版本Python环境的完整指南
  • Git 使用完全指南:从入门到协作开发
  • 光学字符识别(OCR)理论概述与实践教程
  • cmake编译LASzip和LAStools
  • pycharm 中文字体报错
  • 主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
  • 几种简单的排序算法(C语言)
  • 【Fiddler工具判断前后端Bug】
  • mariadb5.5.56在centos7.6环境安装
  • 无法与IP建立连接,未能下载VSCode服务器
  • 基于Java+VUE+MariaDB实现(Web)仿小米商城
  • ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题
  • 电子电气架构 ---智能汽车电子电气架构
  • 使用 Python + SQLAlchemy 创建知识库数据库(SQLite)—— 构建本地知识库系统的基础《一》
  • Docker构建Vite项目内存溢出:从Heap Limit报错到完美解决的剖析
  • jvm 垃圾收集算法 详解
  • 数据库(sqlite)基本操作
  • 【JVM】Java虚拟机(二)——垃圾回收
  • Docker基础(一)
  • “组件、路由懒加载”,在 Vue3 和 React 中分别如何实现? (copy)
  • Vue:Ajax