Java学习笔记(八)--字符串生成器
字符串生成器
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学习笔记(八)--字符串生成器相关推荐
- 【原】Java学习笔记022 - 字符串
1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // ...
- Java学习笔记_字符串/静态static
字符串的特点 字符串的内容永不可变 正是因为字符串不可改变,所以字符串是可以共享使用的 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组 创建字符串的常见3+1种方式 三种 ...
- 【Java学习笔记八】包装类和vector
包装类 在Java语言中,每一种基本的数据类型都有相应的对象类型,称为他们基本类型的包装类(包裹类). 字节byte:Byte.短整数型short:Short 标准整数型int:Integer.长整数 ...
- java学习笔记(八)----包,jar文件
包 //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放.同一个包中的类在相互调用时,是不用指定包名的. ---在编译时对于下面这个类,用这样的方法 ja ...
- 【Java学习笔记】字符串和Date的转换
Date date = new Date();System.out.println("当前时间对象:" + date);//Date对象转为本地时间格式SimpleDateForm ...
- Java学习笔记(八):简单的窗体实现KNN手写体识别(借鉴)
一.KNN手写识别原理 在下图中,要判断绿色圆归属为哪个类(红三角形还是蓝四边形) 如果K=3,因为红三角形占比例为2/3,所以绿色圆归属为红色三角形: 如果K=5,因为蓝四边形比例为3/5,所以绿色 ...
- java学习笔记(二十八)——开发一个小项目(VMeeting3.0)
上篇文章按照较规范的产品需求文档梳理了项目的逻辑,感觉开发起来明晰了很多:挂上一篇文章java学习笔记(二十七)--开发一个小项目(VMeeting2.0)_Biangbangbing的博客-CSDN ...
- Java学习笔记Day02
Java学习笔记Day02 一.细化Hello程序 1.详解代码 //公有的类,叫做Hello public class Hello{//主方法public static void main(Stri ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 2022年Java学习笔记目录
一.2022年Java任务驱动课程 任务驱动,统摄知识点:2022年Java程序设计讲课笔记 二.2022年Java学习笔记 (一)踏上Java开发之旅 Java学习笔记1.1.1 搭建Java开发环 ...
最新文章
- 1.75万亿参数,刚刚智源发布了全球最大预训练模型“悟道2.0”
- Android 异常: failed to connect to localhost/127.0.0.1
- 【杂谈】提升写代码效率不得不做的三件事
- 数十亿次数学运算只消耗几毫瓦电力,谷歌开源Pixel 4背后的视觉模型
- 拓扑排序 Codeforces Round #290 (Div. 2) C. Fox And Names
- luarocks安装
- 微信公众号的html5界面用什么软件,微信公众号编辑排版用什么软件(推荐这4款编辑器)...
- Pr 与音频相关的调整方法
- 基于图像的三维重建——针孔相机模型(1)
- 循环类测验(下)7-10 不变初心数 (15 分)
- Verilog的结构化、数据流、行为级描述方式
- 计算机在医学影像中的应用,计算机图像处理技术在医学影像中的进展与应用
- 什么是数字孪生专用引擎技术
- 解决:电脑屏幕每隔几分钟就闪一次(瞬间黑屏一次),鼠标指针伴随着加载的状态(漏斗或者转圈),然后瞬间恢复正常
- Google Maps API for Android 指南(一)
- java学习之路8——Java集合框架
- 服务器ocs系统,ocs的部署与应用(一)
- vue el-element中el-select的el-option选中值,但页面框中不显示值,需要输入一个其他框值才显示,input同理
- Unity地形材质贴图随高度变化
- 如何用手机连接电脑进行操作
热门文章
- sql 精读(二) 标准 SQL 中的编号函数
- Leetcode 22.括号生成 (每日一题 20210623)
- 判断一颗二叉树是否是平衡二叉树
- 卷积核个数和输入输出通道数的关系
- 文巾解题 283. 移动零
- tableau可视化函数使用案例(六十七)-如何用Tableau获取数据并对数据进行操作?
- Python可视化应用实战-如何制作酷炫的图表?
- 对比几个数据概念,数据仓库、数据集市、数据湖、数据中台分别是什么?到底有什么区别?都得做吗?
- Flink从入门到精通100篇(三)-如何利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏环境
- Matplotlib-scatter-绘制散点图