Java 12 - Java StringBuffer和StringBuilder类

Java StringBuffer和StringBuilder类

当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。

和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据)。

由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用StringBuffer类。

实例

public class Test{public static void main(String args[]){StringBuffer sBuffer = new StringBuffer(" test");sBuffer.append(" String Buffer");System.out.println(sBuffer);  }
}

以上实例编译运行结果如下:

test String Buffer

StringBuffer 方法

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

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

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

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

转载于:https://www.cnblogs.com/alan-blog-TsingHua/p/10080360.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将你的Vim 打造成轻巧强大的IDE

Vim和Emacs一个称为神之编辑器一个被称为编辑器之神,固然很是夸张,但也足以说明这两 款软件的优秀和在程序员界的地位。但是它们都已漫长的学习曲线让人望而生畏,阻止了大 多数人进入。作为一名几乎完全使用Vim写各种代码、文档的人&#xff…

NutchServer的安全层

我曾作为GSoC 2016项目在Apache Nutch的NutchServer的Security Layer上工作,并完成了它。 在此博客文章中,我将解释其工作原理和使用方法。 首先,建议您阅读以前有关GSoC 2016接受的帖子: http ://furkankamaci.com/gsoc-2016-acc…

借助opencv将unsigned char数组显示为图像

在用C或者C做图像处理程序时,经常需要把结果图显示出来看看效果,这时候可以借助opencv的Mat类型,如下:Mat gray1_mat(rect_height, rect_width, CV_8UC1, minsrc);//为了显示图片 先改为mat类型imshow("去雾图像显示", …

眼图观测实验报告_眼图观察测量实验

实验12眼图观察测量实验一、实验目的1.学会观察眼图及其分析方法,调整传输滤波器特性。二、实验仪器1.眼图观察电路(底板右下侧)2.时钟与基带数据发生模块,位号:G 3.噪声模块,位号E 4.100M双踪示…

C、C++申请指针内存的问题

关于指针的血和泪的教训 1、指针申请时一定要检查是否申请成功,当项目比较庞大时,内存有可能申请不成功导致程序中断,而这时候往往无从知道哪里出现了问题。如下:double* wid (double*)malloc((num1) *sizeof(double));//存储每个…

invalid use of null value

给mysql的数据表的一个字段插入数据,不成功, 然后在数据表设计中,把不是null勾选上,又提示 invalid use of null value 这种情况比较尴尬 只能删掉这一个字段,然后新建一个同样名字的字段,然后直接勾选不是null然后在保存就行了 转载于:https://www.cnblogs.com/jnhs/p/1008253…

android 13.0 Launcher3定制folder文件夹16宫格实现二

1. 概述 在13.0的系统产品rom定制化开发中,对于Launcher3的定制功能也是不少的,比如在Launcher3中添加默认文件夹,把默认的app添加的文件夹里面,其他的app 然后按顺序排序。在文件夹布局就是默认的16宫格布局,接下来分析下相关源码来实现功能 2.Launcher3定制化之修改添…

vim配置及插件安装管理(超级详细)

1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一…

vue 父链和子组件索引_vue子组件和父组件双向绑定的几种方案

v-model案例模仿v-model实现案例我是一串要和内部名字联动的一串文字(父组件)父组件改变值带动(父组件)点一下试试.sync方案实现案例这是父组件的东西。利用这个框改变值,看看有没有传到子组件,也可以改子组件看看这里有变化没// v-model方案 你写上一个…

程序逻辑上多一些提示

写程序时要想下各种可能出错的情况&#xff0c;提前给出错误提示&#xff0c;项目大了就可以比较容易找错误。 比如&#xff0c;当特征点个数小于4时不能计算单应矩阵&#xff0c;所以当个数小于4时先输出提示&#xff1a; if (matchePoints.size()>10)for (int i 0; i<…

安卓清理垃圾清理代码_用方面清理代码

安卓清理垃圾清理代码在我以前的文章中&#xff0c;我描述了字母转换&#xff0c;并且提到了我们使用AspectJ来解决该任务&#xff0c;但是我没有提及AspectJ的工作原理和一般性方面。 因此&#xff0c;在接下来的几行中&#xff0c;我将解释&#xff1a; 什么是面向方面的编程…

最大功率点跟踪_ADI公司推出集成最大功率点跟踪和I2C的80V降压升压电池充电控制器...

中国&#xff0c;北京 – Analog Devices, Inc. (ADI)&#xff0c;今日宣布推出LT8491降压-升压电池充电控制器&#xff0c;该控制器具有最大功率点跟踪(MPPT)、温度补偿和I2C接口等特性&#xff0c;适用于遥测和控制。该器件的工作电压可高于、低于或等于经调节的电池浮充电压…

VIM 编码配置

在 Vim 中&#xff0c;有四个与编码有关的选项&#xff0c;它们是&#xff1a;fileencodings、fileencoding、encoding 和 termencoding。在实际使用中&#xff0c;任何一个选项出现错误&#xff0c;都会导致出现乱码。因此&#xff0c;每一个 Vim 用户都应该明确这四个选项的含…

关于摄像头的一些零碎知识

项目上需要用到读取摄像头的帧数据&#xff0c;在对视频帧做算法处理。简单了解了一下摄像头的分类和如何读取。 1、总体上来说&#xff0c;在win平台下面摄像头数据采集无外乎两种方式vfw和direct show。其中vfw是不依赖于sdk的&#xff0c;只要有系统api即可实现摄像头数据的…

MQTT和Java入门

MQTT&#xff08;MQ遥测传输&#xff09;是一种轻量级的发布/订阅消息传递协议。 MQTT在物联网应用程序中得到了广泛使用&#xff0c;因为它被设计为在占用空间小的系统上运行在远程位置。 MQTT 3.1是OASIS标准&#xff0c;您可以在http://mqtt.org/上找到所有信息。 本文将指…

函数的命名空间

# 函数进阶 # a 1 # def func(): # print(a) # func()# 命名空间和作用域 # print() # input() # list # tuple#命名空间 有三种 #内置命名空间 —— python解释器# 就是python解释器一启动就可以使用的名字存储在内置命名空间中# 内置的名字在启动解释器的时候被加载进内…

在Linux环境下mysql的root密码忘记解决方法

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lxsym.blog.51cto.com/1364623/477027 MySQL密码的恢复方法之一 1&#xff0e;首先确认服务器出于安全的状态&#xff0c;也就是没有人能…

史迪仔的原型_星际宝贝三个版本对比,莉罗抛弃史迪仔,童年真的回不去了

星际宝贝这部动漫大家应该不陌生&#xff0c;以前为了看这部动漫&#xff0c;经常蹲着点打开电视&#xff0c;看到莉罗和626一天的烦恼都没了。星际宝贝可以说风靡全球&#xff0c;所以日漫还有国漫也不甘落后&#xff0c;纷纷和迪士尼完成了自己的星际宝贝&#xff0c;来跟宅编…

warning C4091: “typedef ”: 没有声明变量时忽略“_matcher”的左侧

C 警告 warning C4091: “typedef ”: 没有声明变量时忽略“_matcher”的左侧 typedef struct _matcher {int Idx1;int Idx2;double dis; };修改方法&#xff1a;删掉typedef &#xff0c;这是C语言的结构体&#xff0c;C 会自动分配。

C# 获取对象 大小 Marshal.SizeOf (sizeof 只能在不安全的上下文中使用)

C# 能否获取一个对象所占内存的大小&#xff1f; 今日&#xff0c;在项目重构的时候忽然想到一个问题&#xff0c;一个类哪些成员的增加&#xff0c;会影响一个类所占内存的大小&#xff1f;C#有没有办法知道一个对象占多少内存呢&#xff1f; 第一个问题&#xff1a;很快想到是…