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各有优势和不足,可以根据具体的使用环境,选择对应的类型进行使用。

转载于:https://www.cnblogs.com/gxbk629/p/4393212.html

JAVA的StringBuffer类相关推荐

  1. Java之StringBuffer类

    Java之StringBuffer类 SringBuffer类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. Sting类的区别 它们和String类不同 ...

  2. JAVA的StringBuffer类详解

    JAVA的StringBuffer类详解 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer ...

  3. (JAVA)StringBuffer类

    可变数组:StringBuffer类(静态缓冲区) 提高字符串的操作效率 StringBuffer 底层实现原理是字符数组,没有final StringBuffer,含有数组char[] value ...

  4. JAVA 的StringBuffer类

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...

  5. (JAVA)StringBuffer类(练习)

    package com.book.lite;import java.util.Scanner;/* 1.将数组拼接成字符串 2.自定义方法,将缓冲区翻转*/ public class StringBu ...

  6. Java学习总结:31(StringBuffer类)

    StringBuffer类 在Java中String类不适合使用于频繁修改字符串的操作上(因为其字符串常量一旦声明则不可改变,只能改变字符串对象,改变的是其内存地址的指向),所以我们可以使用Strin ...

  7. java API(String类 和 StringBuffer类)

    java api 指的是jdk中提供的各种功能的java类. 在java中定义了String和StringBuffer两个类来包装字符串,并提供了一系列操作字符串的方法,他们都位于java.long包 ...

  8. JAVA API-----String类和StringBuffer类

    String类和StringBuffer类主要用来处理字符串,这两个类提供了很多字符串的使用处理方法.String类是不可变类,表示对象所包含的字符串类不能改变.StringBuffer类是可变类,其 ...

  9. [JAVA基础类库] String类 ○ StringBuffer类 ○ StringBuilder类

    引言 字符串就是一连串的字符序列,Java提供了String.StringBuffer和StringBuilder三个类来封装对字符串,并提供了系列方法来操作字符串对象. String类是不可变类的: ...

最新文章

  1. 我的Android进阶之旅------Android二级ListView列表的实现
  2. (27)XILINX FPGA bit文件转换成MCS文件(FPGA不积跬步101)
  3. 复旦自考 网络专业 java 上机考_上海复旦大学自考方法及考试科目
  4. 谷歌不修用户泪流:已遭利用且影响所有安卓版本的严重 0day 漏洞 StrandHogg 详情遭曝光...
  5. 在线计算机带竖式,竖式计算器Scalar v4.2 采用竖式计算
  6. 宿舍管理系统简单的增删改查
  7. 微信小程序直播电脑端OBS推流直播教程
  8. Java笔记——反射常用方法
  9. Vue上传图片图片,img标签显示图片
  10. CISP 相关知识点梳理
  11. unity 摄像机镜头跟随鼠标拖拽
  12. 总有人会偷看你的朋友圈
  13. 微信公众平台有哪些营销互动活动呢?
  14. 数据分析处理库——Pandas
  15. Lazy and Hungry
  16. python爬取百度美女壁纸
  17. 百信计算机管理员登录账号密码,192.168.1.1登陆入口管理员密码是多少?
  18. 阿里云的短信验证码(详细)
  19. wlan从入门到精通第四期WLAN常用概念
  20. 一个企业级app的开发心得

热门文章

  1. IOS上传图片的方法
  2. Android 设计模式:(三)装饰者模式 —— 装饰对象
  3. 腾讯布局移动应用商店 总下载量累计达40亿次
  4. 服务器产品选型与性价比图解
  5. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效
  6. 《App架构师实践指南》:移动开发的进阶指南
  7. 黑客内参告诉你一个:设计师用div+css 必须知道的网页布局类型
  8. 5.JasperReports学习笔记5-其它数据生成动态的报表(WEB)
  9. 第一次作业,针对软件工程这门课程提出五个疑问。
  10. s3 aws_您需要了解的有关AWS S3的所有信息