Java中的stringbuffer和String类:

Java中字符串String类,String类型的底层原理,什么是StringBuffer,StringBuffer类的原理 String、StringBuffer 阅读详情

#
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。
所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。
在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。
但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。
另外由于StringBuffer是线程安全的,关于线程的概念后续有专门的章节进行介绍,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

1、StringBuffer对象的初始化
StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。
例如:

     StringBuffer s = new StringBuffer();

这样初始化出的StringBuffer对象是一个空的对象。
如果需要创建带有内容的StringBuffer对象,则可以使用:

     **StringBuffer s = new StringBuffer(“abc”);**

这样初始化出的StringBuffer对象的内容就是字符串”abc”。
需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:

StringBuffer s = “abc”;               //赋值类型不匹配
StringBuffer s = (StringBuffer)”abc”;    //不存在继承关系,无法进行强转

StringBuffer对象和String对象之间的互转的代码如下:

String s = “abc”;
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = new StringBuffer(s);     //String转换为StringBuffer
String s1 = sb1.toString();              //StringBuffer转换为String

2、StringBuffer的常用方法
StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。
a、append方法
public StringBuffer append(boolean b)
该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.append(true);
则对象sb的值将变成”abctrue”。
使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如:

     StringBuffer sb = new StringBuffer();
     String user = “test”;
     String pwd = “123”;
     sb.append(“select * from userInfo where username=“)
     .append(user)
     .append(“ and pwd=”)
     .append(pwd);

这样对象sb的值就是字符串“select * from userInfo where username=test and pwd=123”。
b、deleteCharAt方法
public StringBuffer deleteCharAt(int index)
该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:

         StringBuffer sb = new StringBuffer(“Test”);
         sb. deleteCharAt(1);

该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。
还存在一个功能类似的delete方法:
public StringBuffer delete(int start,int end)
该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:

    StringBuffer sb = new StringBuffer(“TestString”);
         sb. delete (1,4);

该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。
c、insert方法
public StringBuffer insert(int offset, boolean b)
该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:

    StringBuffer sb = new StringBuffer(“TestString”);
    sb.insert(4,false);

该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。
d、reverse方法
public StringBuffer reverse()
该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:

         StringBuffer sb = new StringBuffer(“abc”);
         sb.reverse();

经过反转以后,对象sb中的内容将变为”cba”。
e、setCharAt方法
public void setCharAt(int index, char ch)
该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:

StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);

则对象sb的值将变成”aDc”。
f、trimToSize方法
public void trimToSize()
该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
总之,在实际使用时,String和StringBuffer各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。

原文来自http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html

string类
http://www.cnblogs.com/springcsc/archive/2009/12/03/1616326.html

Java语言中StringBuffer的用法 StringBuffer的常用方法实例,如:append、insert等等。其中,StringBuffer与String的区别详细做了例子。 立即下载

相关推荐

macOS Monterey官方镜像高速下载指南(附迅雷链接+兼容性清单)

本文提供macOS Monterey官方镜像的高速下载指南,重点介绍利用迅雷等工具加速下载官方安装包的有效方法。同时,详细列出了系统兼容性清单,帮助用户在下载前确认设备支持,并分享了从下载、验证到安全安装的完整流程与常见问题解决方案。

j7k8l的博客 2191

Java中的StringBuffer类

【代码】Java中的StringBuffer类。

SakuraMG的博客 2812

RAG优化知识库检索(4):混合检索技术

混合检索技术在RAG(检索增强生成)系统中的应用显著提升了检索效果。本文探讨了语义检索与关键词检索的优缺点,指出两者在语义理解和精确匹配方面的互补性。通过结合BM25与向量检索,混合检索系统能够更全面地捕捉文档的相关性。文章详细介绍了并行检索、级联检索、稀疏-密集混合表示等多种结合方式,并探讨了权重调整策略,如线性组合、动态权重调整和排序融合算法。此外,稀疏-密集混合检索架构的设计和实现方案也被深入分析,展示了如何通过结合不同检索方法的优势,提升RAG系统的检索质量和效率。

分享一些感兴趣的技术方面 2073

Java:StringBuffer

StringBuffer的特点: 1、线程安全:不安全,存在同步操作同一数据的行为,效率高。安全的时候,没有同步操作,效率低。 2、StringBuffer是一个可变序列。 3、StringBuffer又被称为字符缓冲区,把它当成一个字符串去操作,只不过它与string相比是可以修改内容的。 4、在任何时间点,它包含着一些特定的字符序列,但是可以通过某些字符序列的长度和内容。 StringBuffer与String的区别: 1、StringBuffer的内容和长度都是可以改变的,String却不

qq_63531507的博客 9863

CXL协议-第三章 CXL事务层

CXL.io为I/O设备提供了一个非一致的负载/存储接口。图3-1显示了Flex总线分层层次结构中的位置。事务类型、事务分组格式、基于信用的流量控制、虚拟通道管理和事务排序规则遵循PCIe*定义,详情请参考PCIe基础规范的“事务层规范”章节。本章重点介绍了用于CXL.io的著名的PCIe操作模式或特性。

qq_41305217的博客 2769

FPGA实战:用DDR3和乒乓操作解决视频帧撕裂问题(附Verilog代码)

本文详细介绍了如何利用DDR3内存和乒乓操作架构解决FPGA视频处理中的帧撕裂问题。通过多帧缓存原理、AXI接口配置和自适应乒乓操作设计,有效隔离读写操作,确保视频流稳定传输。文章包含Verilog代码实现和性能优化技巧,适用于工业相机、医疗影像等高速视频处理场景。

m2n3b4v5c6的博客 290

【JAVA-Day45】Java常用类StringBuffer解析

在Java中,StringBuffer是一个用于处理字符串的类,它允许我们对字符串进行动态操作,如拼接、插入、删除等。通过本篇文章的学习,我们深入了解了Java中常用类StringBuffer的各种方法及其应用场景。同时,我们也比较了StringBuffer与String的不同之处,并分享了一些在实际开发中的最佳实践。希望本文能够对你在Java字符串处理中提供有价值的指导。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 3万+

VTK实战笔记(1)在win11搭建VTK-9.4.2 + qt5.15.2 + VS2019_x64开发环境

Visual Studio 2019 + qt5.15.2 + vtk9.4.2

心向阳光,斗志昂扬! 978

Java——StringBuffer 和 StringBuilder

StringBuffer 是 Java 中一个用于可变字符串操作的类。与 String 类不同,String 对象是不可变的,一旦创建就无法更改,而 StringBuffer 则允许对字符串内容进行修改,能够提高字符串操作的效率,尤其是在需要频繁修改字符串内容的场合。StringBuffer 的所有的公共方法都是有 synchronized 关键字的,所以都是同步的,所以它在多线程中使用是线程安全的,但是由于这种对多线程情况的优化,导致它在单线程中使用性能较差。

Stewie Lee的博客 1789

Halcon深度图转伪彩图

Halcon深度图转伪彩图

Quintin 3934

STM32G474的HRTIM实战:用CubeMX配置互补PWM驱动全桥电路(附移相算法代码)

本文详细介绍了如何使用STM32G474的HRTIM高分辨率定时器,通过CubeMX配置互补PWM驱动全桥电路,并附移相算法代码。内容涵盖HRTIM硬件架构解析、CubeMX配置全流程、移相控制算法实现及调试技巧,为数字电源和电机控制领域提供实用解决方案。

weixin_27017211的博客 483

Java 中的StringBuffer类

一:StringBuffer有四个构造方法: StringBuffer sbf = new StringBuffer();//无参构造,会设置最开始的容量为16个字节 StringBuffer sbf2 = new StringBuffer("hhq");//String类型,会设置最开始的容量为16+输入的 String值的容量 StringBuffer sbf3 = new StringBuffer(2000);//int类型,设置最开始的容量为这个i...

qq_51554527的博客 2234

Unreal 从入门到精通之VR常用操作

本文总结了使用Unreal5开发VR项目时遇到的常见问题及其解决方案。首先,介绍了如何通过VRPawn的TryTeleport函数设置玩家视角位置,确保头显移动时安全区域的正确传送。其次,详细说明了如何在Unreal中播放视频,包括导入视频文件、创建媒体播放器和媒体纹理,并将其应用到3D物体上。接着,讲解了如何播放VR全景视频,建议使用MediaPlate媒体板并调整几何体为球体。最后,讨论了如何手动打开和关闭VR模式,以便在PC模式和头显模式之间切换。这些方法为VR开发提供了实用的技术指导。

TxNet 952

Java之String类与StringBuffer类

一、String类 1.实例化方式 1)直接赋值法 String str="abc"; String类的设计采用了共享设计模式。在JVM底层实际上会自动维护一个对象池(字符串对象池),如果采用直接赋值法赋值,JVM会先在对象池中查找,如果有,则直接引用;如果没有,则将该实例化对象放到对象池中。 所谓对象池就是一个对象数组。优点:减少内存的开销。 2)构造法 String st...

smell201611010513的博客 1808

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java = stringbuffer_Java String类和StringBuffer类有什么区别?

由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串的修改,在JDK中提供了个StringBuffer类(也称字符串缓冲区)。StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。针...

weixin_28730927的博客 359

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java中的String类与StringBuffer 和 StringBuilder 类的应用

在实际开发中,我们可以根据具体的需求选择合适的类: 如果需要表示一个固定的字符串,可以选择String类。 如果需要在多线程环境中对字符串进行修改,可以选择StringBuffer类。 如果需要在单线程环境中对字符串进行修改,并且对性能有较高要求,可以选择StringBuilder类。

MrxiaoAXiao的博客 1050

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java—String类、StringBuffer类和StringBuilder类的使用

在Java中自带针对字符串操作的类,String类、StringBuffer类和StringBuilder类,而这三种类都是针对字符串但也有区别,在本文中则介绍这三种类的区别。String类是jdk自带的字符串类,它是一个字符串常量,长度是不可变的。当你创建字符串时,给定多少个字符就是多少个字符,不允许更改字符串长度。因为String底层使用字符串数组,而该数组使用final修饰,所以它是不可变。

Jun_ID的博客 973

Java学习——String类和StringBuffer类

Java学习——String类和StringBuffer类1 String类1.1 String类的初始化1.2 String类的常见操作2 StringBuffer类3 String类和StringBuffer类的不同 1 String类 1.1 String类的初始化 1.1.1使用字符串常量直接初始化一个String对象 String str="abc"; 1.1.2使用String的构造方法初始化字符串对象,String类的构造方法如下: 方法声明 功能描述 String() 创建

God_stf的博客 626

java中的String类/StringBuffer类/StringBuilder类

创建字符串时,先去字符串常量池中去查找有没有相同值的对象,如果没有,就创建一个字符串对象,并返回地址,如果字符串常量池中已经存储,不用创建新的,直接返回已存在对象的地址(已创建的字符串)因为String声明的字符串对象对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时,占用空间。拼接指定的字符串内容到原字符串的末尾,并返回一个新的字符串对象。从指定的位置开始查找,返回的是指定字符串首次出现的位置。从指定位置从后向前找,返回的是指定字符串首次出现的位置。返回的是指定字符串首次出现的位置。

2301_77864799的博客 1767

Java中String类,StringBuffer类和StringBuilder类

底层分析: (1)String类 String类对象代表不可变的字符序列。其底层结构如下: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; ...

m0_37671741的博客 222

Java中String,StringBuffer,StringTokenizer类

是一种特殊的对象,有其他对象没有的特性。 new String()和new String("")都是声明一个新的空字符串,是空串不是null。区别:空串是经过new运算符分配了内存,即实际存在了(定义了)。而null则没有(只声明),调用null的字符串的方法会抛出空指针异常。 从根本上认识java.lang.String类和String池。 1、String类是final的,不可被继承。public final class String。 2、String类的本质是字符数组

属牛 260

JAVA中String类和StringBuffer类的区别

String类用来表示那些创建后就不会再改变的字符串,它是immutable的。而StringBuffer类用来表示内容可变的字符串,并提供了修改底层字符串的方法。           当我们进行字符拼接时,最好使用StringBuffer类而非String类,因为前者将比后者快上百倍。           的确,在程序的太多场合我们都会进行字符串拼接工作,简单的代码示例如下:

Ada168855的专栏 1173

【Java基础】String类、StringBuffer和StringBuilder类

String String类继承了object类,用来描述字符串。Java中定义了String类用来处理字符串,并提供了一系列操作字符串的方法,他们都封装在java.lang包中,因此不需要导入包就可以直接使用。 String类使用了final修饰符,表示该类不可以被重写。 String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。 String s1 = "abc"; // 常量池 String s2 = new String("abc"); //

孙正_大正 4277

java-String,StringBuffer,StringBuilder类

String类的方法使用 -从JDK中得出: -String类代表字符串,字符串字面值"abc"也可以看作一个字符串对象 String str = "abc"; //相当于Person p = new Person(); "abc"相当于new Person(); ...

qq_41481924的博客 250

java stringbuffer长度限制_String类、StringBuffer类和StringBuilder类

一、String 类java 没有内置的字符串类型,但是在lang 包中提供了String类来创建和操作字符串,可以发现C# 中定义字符串时,string 第一个字母时小写的。java中定义一个子符串,注意 双引号括住该值,实际上括住的一串字符就是String 对象。注意:字符串变量必须经过初始化才能使用。字符串对象一旦被创建,其值时不能改变的,但可以使用其他变量重新赋值的方式进行更改。声明 和赋...

weixin_39975529的博客 653

Java中String与StringBuffer类的区别

彻底弄懂String与StringBuffer

过去即未来的博客 1375
上一篇: Django中远程服务器访问bad request
下一篇: 正则表达式
JohnaXu
博客等级 码龄15年 11粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值