字符串生成器

Java StringBuffer 和 StringBuilder 类

创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

一、StringBuffer类

StringBuffer的四个构造方法如下:

StringBuffer()
构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。StringBuffer(CharSequence seq)
public java.lang.StringBuilder(CharSequence seq)
构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓冲区。StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

以下是 StringBuffer 类支持的主要方法:

序号 方法描述
1 public StringBuffer append(String s) 将指定的字符串追加到此字符序列。
2 public StringBuffer reverse() 将此字符序列用其反转形式取代。
3 public delete(int start, int end) 移除此序列的子字符串中的字符。
4 public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。
5 replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。

二、StringBuilder类

StringBuilder类和StringBuffer类功能基本相似,方法也差不多,主要区别在于StringBuffer类的方法是多线程安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。

构造方法 描述
StringBuilder() 构造一个不包含任何字符且初始容量为16个字符的字符串生成器。
StringBuilder(int capacity) 构造一个不带任何字符且capacity参数指定的初始容量的字符串生成器。
StringBuilder(CharSequence seq) 构造一个字符串构建器,其中包含与指定的字符相同的字符CharSequence
StringBuilder(String str) 构造一个字符串构建器,初始化为指定字符串的内容。

下面的列表里的方法和 String 类的方法类似:

序号 方法描述
1 int capacity() 返回当前容量。
2 char charAt(int index) 返回此序列中指定索引处的 char 值。
3 void ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。
4 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst
5 int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。
6 int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
7 int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。
8 int lastIndexOf(String str, int fromIndex) 返回 String 对象中子字符串最后出现的位置。
9 int length() 返回长度(字符数)。
10 void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch
11 void setLength(int newLength) 设置字符序列的长度。
12 CharSequence subSequence(int start, int end) 返回一个新的字符序列,该字符序列是此序列的子序列。
13 String substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
14 String substring(int start, int end) 返回一个新的 String,它包含此序列当前所包含的字符子序列。
15 String toString() 返回此序列中数据的字符串表示形式。

三、API文档

想要了解更多的StringBuffer类方法可以查询java.lang.StringBuffer的API说明;StringBuilder类方法在java.lang.StringBuilder中。

阅读最新在线文档 。

Java学习笔记(八)--字符串生成器相关推荐

  1. 【原】Java学习笔记022 - 字符串

    1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // ...

  2. Java学习笔记_字符串/静态static

    字符串的特点 字符串的内容永不可变 正是因为字符串不可改变,所以字符串是可以共享使用的 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组 创建字符串的常见3+1种方式 三种 ...

  3. 【Java学习笔记八】包装类和vector

    包装类 在Java语言中,每一种基本的数据类型都有相应的对象类型,称为他们基本类型的包装类(包裹类). 字节byte:Byte.短整数型short:Short 标准整数型int:Integer.长整数 ...

  4. java学习笔记(八)----包,jar文件

    包  //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放.同一个包中的类在相互调用时,是不用指定包名的.    ---在编译时对于下面这个类,用这样的方法  ja ...

  5. 【Java学习笔记】字符串和Date的转换

    Date date = new Date();System.out.println("当前时间对象:" + date);//Date对象转为本地时间格式SimpleDateForm ...

  6. Java学习笔记(八):简单的窗体实现KNN手写体识别(借鉴)

    一.KNN手写识别原理 在下图中,要判断绿色圆归属为哪个类(红三角形还是蓝四边形) 如果K=3,因为红三角形占比例为2/3,所以绿色圆归属为红色三角形: 如果K=5,因为蓝四边形比例为3/5,所以绿色 ...

  7. java学习笔记(二十八)——开发一个小项目(VMeeting3.0)

    上篇文章按照较规范的产品需求文档梳理了项目的逻辑,感觉开发起来明晰了很多:挂上一篇文章java学习笔记(二十七)--开发一个小项目(VMeeting2.0)_Biangbangbing的博客-CSDN ...

  8. Java学习笔记Day02

    Java学习笔记Day02 一.细化Hello程序 1.详解代码 //公有的类,叫做Hello public class Hello{//主方法public static void main(Stri ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  10. 2022年Java学习笔记目录

    一.2022年Java任务驱动课程 任务驱动,统摄知识点:2022年Java程序设计讲课笔记 二.2022年Java学习笔记 (一)踏上Java开发之旅 Java学习笔记1.1.1 搭建Java开发环 ...

最新文章

  1. 1.75万亿参数,刚刚智源发布了全球最大预训练模型“悟道2.0”
  2. Android 异常: failed to connect to localhost/127.0.0.1
  3. 【杂谈】提升写代码效率不得不做的三件事
  4. 数十亿次数学运算只消耗几毫瓦电力,谷歌开源Pixel 4背后的视觉模型
  5. 拓扑排序 Codeforces Round #290 (Div. 2) C. Fox And Names
  6. luarocks安装
  7. 微信公众号的html5界面用什么软件,微信公众号编辑排版用什么软件(推荐这4款编辑器)...
  8. Pr 与音频相关的调整方法
  9. 基于图像的三维重建——针孔相机模型(1)
  10. 循环类测验(下)7-10 不变初心数 (15 分)
  11. Verilog的结构化、数据流、行为级描述方式
  12. 计算机在医学影像中的应用,计算机图像处理技术在医学影像中的进展与应用
  13. 什么是数字孪生专用引擎技术
  14. 解决:电脑屏幕每隔几分钟就闪一次(瞬间黑屏一次),鼠标指针伴随着加载的状态(漏斗或者转圈),然后瞬间恢复正常
  15. Google Maps API for Android 指南(一)
  16. java学习之路8——Java集合框架
  17. 服务器ocs系统,ocs的部署与应用(一)
  18. vue el-element中el-select的el-option选中值,但页面框中不显示值,需要输入一个其他框值才显示,input同理
  19. Unity地形材质贴图随高度变化
  20. 如何用手机连接电脑进行操作

热门文章

  1. sql 精读(二) 标准 SQL 中的编号函数
  2. Leetcode 22.括号生成 (每日一题 20210623)
  3. 判断一颗二叉树是否是平衡二叉树
  4. 卷积核个数和输入输出通道数的关系
  5. 文巾解题 283. 移动零
  6. tableau可视化函数使用案例(六十七)-如何用Tableau获取数据并对数据进行操作?
  7. Python可视化应用实战-如何制作酷炫的图表?
  8. 对比几个数据概念,数据仓库、数据集市、数据湖、数据中台分别是什么?到底有什么区别?都得做吗?
  9. Flink从入门到精通100篇(三)-如何利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏环境
  10. Matplotlib-scatter-绘制散点图