全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 中String和StringBuffer与StringBuilder的区别及使用方法

java 中String和StringBuffer与StringBuilder的区别及使用方法

1. String 类

 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。

   String a = "a"; //假设a指向地址0x0001

   a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。

   因此String的操作都是改变赋值地址而不是改变值操作。

2. StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

  StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
  StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
  StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

3.StringBuffer

  StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。

1)首先String、StringBuffer、StringBuilder在JDK中都被定义为final类,这意味着他们不可以被继承。

2)String最常见,与StringBuffer相比,String的性能较差,因为对String类型进行改变的时候都会重新生成一个新的String对象,这在字符串拼接操作时很明显,因此内容经常改变的字符串不应该使用String,如果不考虑多线程,则应使用StringBuilder。

3)StringBuffer生成一个对象后,在进行字符串拼接操作时,调用append方法即可,不会产生新的对象,仅对对象本身进行操作,性能比String要高。另外StringBuffer是线程安全的,因此适合在多线程中使用,也正因为如此,速度跟StringBuilder相比会比较慢。

4)StringBuilder的使用方法跟StringBuffer类似,但其是非线程安全的,因此一般常用于单线程,效率比StringBuffer高。

综上所述,选择哪个,需要从内存性能、线程安全、执行效率等多方面考虑,从上面的几条对比中可以得出答案。

以上就是java String和StringBuffer与StringBuilder 的区别,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # String与StringBuffer  # String与StringBuffer和StringBuild的区别  # Java中字符数组、String类、StringBuffer三者之间相互转换  # java stringbuffer的用法示例  # JAVA中String类与StringBuffer类的区别  # java_String和StringBuffer区别分析  # Java之String、StringBuffer、StringBuilder的区别分析  # Java那点事——StringBuffer与StringBuilder原理与区别  # Java中String、StringBuffer和StringBuilder底层实现深入剖析  # 多线程  # 都是  # 如有  # 不可以  # 并在  # 有一定  # 这就  # 希望能  # 这在  # 会比  # 很明显  # 谢谢大家  # 但其  # 对它  # 中都  # 也正  # 几条  # 最常见  # 较慢  # 单线程 


相关文章: 建站之星安装提示数据库无法连接如何解决?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何基于PHP生成高效IDC网络公司建站源码?  如何在自有机房高效搭建专业网站?  如何通过虚拟机搭建网站?详细步骤解析  如何通过VPS建站无需域名直接访问?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  韩国服务器如何优化跨境访问实现高效连接?  b2c电商网站制作流程,b2c水平综合的电商平台?  建站之星安装路径如何正确选择及配置?  jQuery 常见小例汇总  再谈Python中的字符串与字符编码(推荐)  如何在IIS管理器中快速创建并配置网站?  如何在阿里云服务器自主搭建网站?  想学网站制作怎么学,建立一个网站要花费多少?  为什么Go需要go mod文件_Go go mod文件作用说明  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何通过.red域名打造高辨识度品牌网站?  重庆市网站制作公司,重庆招聘网站哪个好?  建站168自助建站系统:快速模板定制与SEO优化指南  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  javascript基本数据类型及类型检测常用方法小结  建站之星免费模板:自助建站系统与智能响应式一键生成  如何选择香港主机高效搭建外贸独立站?  如何用虚拟主机快速搭建网站?详细步骤解析  宝塔建站助手安装配置与建站模板使用全流程解析  免费网站制作appp,免费制作app哪个平台好?  建站之星后台密码遗忘或太弱?如何重置与强化?  定制建站流程解析:需求评估与SEO优化功能开发指南  建站之星如何实现PC+手机+微信网站五合一建站?  宁波自助建站系统如何快速打造专业企业网站?  如何快速生成凡客建站的专业级图册?  Python多线程使用规范_线程安全解析【教程】  如何在新浪SAE免费搭建个人博客?  专业网站建设制作报价,网页设计制作要考什么证?  网站制作价目表怎么做,珍爱网婚介费用多少?  linux top下的 minerd 木马清除方法  安徽网站建设与外贸建站服务专业定制方案  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过商城自助建站源码实现零基础高效建站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  微课制作网站有哪些,微课网怎么进?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何做网站制作流程,*游戏网站怎么搭建?  独立制作一个网站多少钱,建立网站需要花多少钱?  电商网站制作价格怎么算,网上拍卖流程以及规则?  C++如何将C风格字符串(char*)转换为std::string?(代码示例) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。