Java提供了String,StringBuffr,StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法.

他们的相同点都是封装字符串;都实现了CharSeqence接口.

public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable,CharSequnce

public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable,CharSeqence

他们之间的区别如下:

  1. 可变与不可变

String类是一个不可变类,即创建String对象后,该对象中的字符串是不可改变的,直到这个对象被销毁.StringBuffer与StringBuilder都继承自AbstractStringBudiler类,在AbstractBuilder中也是使用字符数组保存字符串,是可变类.

由于String是可变类,适合在需要被共享的场合中是使用,当一个字符串经常被修改时,最好使用Stringbuffer实现.如果用String保存一个经常被修改的字符串,该字符串每次修改时都会创建新的无用的对象,这些无用的对象会被垃圾回收器回收,会影响程序的性能.

  1. 初始化方法

当创建String对象时,可以利用构造方法String str = new String(“Java”)的方式来对其进行初始化,也可以直接用赋值的方式String s= “Java”来初始化.二StringBuffer只能使用构造方式StringBuffer sb = new StringBuffer(“hello”)的方式初始化.

  1. 字符串修改方式

String字符串修改方法是首先创建一个StringBuffer,其次调用StringBuffer的append方法,最后调用StringBuffer的toString()方法把结果返回.

  1. 是否实现了equals和hashCode方法

String实现了equals()方法和hashCode()方法,而StringBuffer没有实现equals()方法和hashCode()方法

  1. 是否线程安全

StringBuffer与StringBuilder都提供了一系列插入,追加,改变字符串里的字符序列的方法,他们的用法基本相同,知识StringBuilder是线程不安全的,StringBuffer是线程安全的,如果只是在单线程中使用字符串缓冲区,则StringBuilder的效率会高些,但是当多线程访问时,最好使用StringBuffer.

综上所述,在执行效率方面,StringBuilder最高,StringBuffer次之,String最低,对于这种情况,一般而言,如果要操作的数量比较小,应优先使用String类;如果是在单线程下操作大量数据,应优先使用StringBuilder类;如果是在多线程下操作大量数据,应优先使用StringBuffer类.

stringbuilder删除最后一个字符_Java类-StingBuffer,StringBuilder相关推荐

  1. StringBuilder删除最后一个字符

    判断字符串的最后一个字符如果是;,那么就删除这个字符 if (sb.length() > 0 && sb.charAt(sb.length() - 1) == ';') {sb. ...

  2. 删除StringBuilder的最后一个字符?

    本文翻译自:Remove last character of a StringBuilder? When you have to loop through a collection and make ...

  3. 如何从字符串中删除最后一个字符?

    我想从字符串中删除最后一个字符. 我尝试这样做: public String method(String str) {if (str.charAt(str.length()-1)=='x'){str ...

  4. c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法

    当月第一天0时0分0秒 DateTime.Now.AddDays(1 - DateTime.Now.Day).Date 当月最后一天23时59分59秒 DateTime.Now.AddDays(1 - ...

  5. ios html 全选文本框,【前端】IOS input输入框按删除键删除字符,删除最后一个字符时,概率性出现光标前面多余一个字符...

    IOS input输入框按删除键删除字符,删除最后一个字符时,概率性出现光标前面多余一个字符,并且placeholder文字也能显示出来 回答 删除最后一个字符时延迟一毫秒 我用了vue,input[ ...

  6. stringbuilder截取最后一个字符

    stringBuffer删除最后一个字符:sql.deleteCharAt(sql.length()-1);  sql.substring(0, sql.length() - 1);

  7. c++ 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos。栈数组的尺寸由常量SIZE确定。栈的基本操作为Push()和Pop()。

    定义一个字符栈类Stack(包括类的实现).数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos.栈数组的尺寸由常量SIZE确定.栈的基本操作为Push()和Pop(). //定义一个字符栈 ...

  8. python中指定最后一个字符_如何从Python字符串中删除最后一个字符?

    如何从Python字符串中删除最后一个字符? Python支持负索引切片和正切片.负索引从  -1 到-(iterable_length)开始.我们将使用负切片从可迭代对象的末尾获取元素. 索引  - ...

  9. RN——TextInput 文本框删除最后一个字符,光标移动到组件末尾

    问题表现 初始未输入字符时,输入框光标正常居中 输入字符后,输入框光标正常位于文字之后 删除字符同时还有剩余文字,输入框光标正常位于文字之后 删除最后一个文字后,输入框光标跳动到组件末尾 复现步骤 使 ...

最新文章

  1. 苹果如何使用神经网络在点云中做对象检测
  2. 【转载】python3安装scrapy之windows32位爬坑
  3. 一个与神经网络分类特征旋转不变性有关的实验
  4. oracle存储过程循环单列,Oracle存储过程循环语法实例分析
  5. 工厂设计模式–一种有效的方法
  6. 前端学习(1887)vue之电商管理系统电商系统之通过路由的形式显示用户列表
  7. Python_012 CGI编程
  8. golang 猜数字小游戏
  9. 关于PreScan的Vissim插件
  10. 路由器怎么设置WiFi短信认证?
  11. Java获取IP归属地
  12. Aho-Corasick 算法
  13. 关闭Win10强制自动更新驱动
  14. html页面上使用vlc,在HTML页面上嵌入VLC插件
  15. 基于nexus搭建golang代码下载代理缓存私服
  16. <金屋藏书>app 技术支持
  17. iframe嵌套微信公众号文章
  18. 解决导出CSV文件乱码的问题
  19. 登录网络共享进入别人计算机,局域网怎么共享别人电脑的网络
  20. MongoDB 复制集 (一) 成员介绍

热门文章

  1. 小学认识计算机硬件ppt,认识计算机硬件课件.ppt
  2. Java SSM篇3——Mybatis
  3. Windows之vue-cli安装和vue项目快速搭建
  4. android 或者vide的高度和宽度,关于Android中videoView.setVideoPath(“PATH”)的问题!!!急!!...
  5. Java Lambda 表达式讲解
  6. Flink官网自学笔记
  7. java gson 工具类_GSON 实体 转换工具类
  8. Gensee Android SDK(一)组成结构
  9. 计算机应用基础重点分析,计算机应用基础整体设计重点分析.doc
  10. Linux进阶之路———— RPM 与 YUM 包管理