当前位置: 首页 > news >正文

零基础学JAVA--Day29( StringBuffer+ StringBuilder)

String类常用方法

String类是保存字符串常量的。每次更新都需要重新开辟空间,效率较低,因此java设计者还提供了StringBuilder和StringBuffer来增强String的功能,并提高效率。

 StringBuffer

1、java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。
2、很多方法与String相同,但StringBuffer是可变长度的。
3、StringBuffer是一个容器。

1、StringBuffer的直接父类是AbstractStringBuilder
2、StringBuffer实现了Serializable,即StringBuffer的对象可以串行化
3、在父类中AbstractStringBuilder有属性char[ ]value,不是final类该value数组存放字符串内容,因此是存放在堆中的
4、StringBuffer是一个final类,不能被继承

String VS StringBuffer

1)String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低//private  final  char  value[ ];
2)StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,有自己的扩容机制,效率较高//char [ ]  value;//这个放在堆

StringBuffer构造器

构造方法摘要
1、StringBuffer()<-----------常用
        构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。
2、StringBuffer(CharSequence seq)
publicJava.lang.StringBuilder(CharSequence seq)构造一个字符串缓冲区,它包含与指定的
CharSequence相同的字符。
3、StringBuffer(int capacity) //capacity [容量]<-----------常用
构造一个不带字符,但具有指定初始容量的字符串缓冲区。即对char [ ]大小进行指定
4、StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。大小就是str.length()+16

String和StringBuffer相互转化

//String----->StringBuffer
String str = "aaa";
//方式1 使用构造器
//注意:返回的才是StringBuffer对象,对str本身没有影响
StringBuffer stringBuffer new StringBuffer(str);//方式2使用的是append方法
StringBuffer stringBuffer1=new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);//StringBuffer->String
StringBuffer stringBuffer3 = new StringBuffer("bbb");//方式1:使用StringBuffer提供的toString方法
String s = stringBuffer3.toString();//方式2:使用构造器来搞定
String s1 = new String(stringBuffer3);

  StringBuffer类常用方法

StringBuffer s = new StringBuffer("hello");
//增
s.append(',');//"hello, "
s.append("张三丰");//"hello,张三丰"//删
/**删除索引为>=start&&<end处的字符删除11-14(不包含14)的字符[11.14)
*/
s.delete(11,14);//改
//使用周芷若替换索引9-11的字符 [9.11)
s.replace(9,11,"周芷若");//插入
//在索引为9的位置插入“赵敏”,原来索引为9的内容自动后移
s.insert(9,"赵敏");//查找指定的子串在字符串 第一个字符 第一次 出现的索引,如果找不返回-1
intindexOf=s.indexOf("张三丰");//长度
System.out.println(s.length());

StringBuilder类

1)一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步(不保证线程安全)。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。
2)在StringBuilder上的主要操作是append和 insert方法,可重载这些方法,以接受任意类型的数据。

//1。StringBuilder继承AbstractStringBuilder类
//2。实现了Serializable,说明stringBuilder对象是可以串行化(对象可以网络传输,可以保持到文件
//3。StringBuilder是final类,不能被继承
//4。StringBuilder对象字符序列仍然是存放在其父类AbstractStringBuilder的char[]value;因此,字符序列是堆中
//5。StringBuilder的方法,没有做互斥的处理,即没有synchronized
StringBuilder stringBuilder = new StringBuilder();

String、StringBuffer 和StringBuilder的比较

1)StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样
2)String:不可变字符序列,效率低,但是复用率高。
3)StringBuffer:可变字符序列、效率较高(增删)、线程安全
4)StringBuilder:可变字符序列、效率最高、线程不安全
5)String使用注意说明:

string s =" a ";//创建了一个字符串
s + = “b";
/*实际上原来的”a“字符串对象已经丢弃了,现在又产生了一个字符串s+“b”(也就是”ab)。
如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。
如果这样的操作放到循环中,会极大影响程序的性能
*/=>结论:如果我们对String做大量修改,不要使用String

String、StringBuffer 和StringBuilder的选择

使用的原则,结论:
1.如果字符串存在大量的修改操作,一般使用StringBuffer或StringBuilder
2.如果字符串存在大量的修改操作,并在单线程的情况,使用StringBuilder
3.如果字符串存在大量的修改操作,并在多线程的情况,使用StringBuffer
4.如果我们字符串很少修改,被多个对象引用,使用String,比如配置信息等

StringBuilder的方法使用和 StringBuffer一样,不再说.

————————————————————————————————————

Day29 End

离回家还有60天~

http://www.dtcms.com/a/597821.html

相关文章:

  • 做源码演示的网站果洛wap网站建设多少钱
  • Zabbix7设置告警邮件提醒
  • 【九、Linux访问网络附加存储】
  • 网站模块分析枣庄有做网站的吗
  • 记事本做网站怎么改字体出入合肥最新通知今天
  • 网站建设与管理任务分工可做网站的免费空间
  • 常见的自动化测试框架有哪些?(Selenium、Appium、Cypress等)
  • 做彩票网站多少钱网站建设道冲
  • 从C++开始的编程生活(12)——vector简单介绍和迭代器
  • 【MySQL | 基础】DQL
  • 为什么Redis不支持回滚
  • 中航网站建设国家icp备案网站
  • 中国室内设计联盟官方网站入口360建筑网怎么重新注册
  • 专业网站制作企业公司网站的制作公司
  • 深入理解Java泛型:类型擦除、通配符PECS原则与实践
  • Supabase 适用场景全解析:从原型到生产的落地指南
  • moodle网站建设自己做网站如何盈利
  • 网络建站网网络推广中国建设网官方网站电子银行
  • 专业网站排名优化公司公司企业logo
  • 《STM32单片机开发》p5
  • C#桌面框架与Qt对比及选型(国产操作系统开发视角)
  • (4)框架搭建:Qt实战项目之主窗体介绍
  • 网站开发建设准备工作公司在百度怎么推广
  • 大文件上传实战经验分享:从痛点到完美解决方案
  • 图书馆网站建设的作用iis8出现在网站首页
  • 如何使用Enterprise Architect和SysML进行复杂嵌入式系统建模
  • RocketMQ核心知识点
  • 网站运营岗位职责描述网络优化分为
  • 【 前端 -- css 】浮动元素导致父容器高度塌陷如何解决
  • 用html5的视频网站重庆公司有哪些