栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

StringBuffer和StringBuilder的概述 [Java]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

StringBuffer和StringBuilder的概述 [Java]

StringBuffer和StringBuilder的介绍 StringBuffer和StringBuilder都是什么?

StringBuffer和StringBuilder都是可变的字符序列

String,StringBuffer和StringBuilder有哪些异同? 差异:

String 是不可变字符序列

StringBuffer和StringBuilder都是可变字符序列

那么StringBuffer和StringBuilder又有什么区别呐?

StringBuffer是线程安全的,但是效率就偏低

  • 为什么我们说StringBuffer是线程安全的?
  • 因为StringBuffer中的方法是由synchronized修饰的,也就表示是同步方法,
    被synchronized修饰的代码块表示是同步代码块
    被synchronized修饰的方法表示是同步方法

StringBuilder是线程不安全的,效率高

相同点:

String, StringBuffer,和StringBuilder在底层都是通过char[]进行存储的

那么我什么时候使用StringBuffer,什么时候使用StringBuilder

如果一个问题都不涉及多线程,那么这个时候我们也就不需要考虑线程安全,我们这个时候应该使用StringBuilder

  • StringBuffer和StringBuilder都是可变字符序列,它们调用一个修改字符串的方法可以不用接收返回值,因为它们是将原有的字符串对象进行了修改
  • 但是String是不可变字符序列,它们调用一个修改字符串的方法一般都必须要接收返回值,因为String改变不是对原有的字符串对象进行了修改,而是创建了一个新的字符串对象并且将这个新的字符串对象返回了
    • 其实都是产生了一个返回了改变后一个字符串,只不过StringBuffer和StringBuilder都是在原有的字符串上进行了修改,而String是会产生一个新的字符串,然后这个新的字符串赋上我们需要的值
补充:
  1. StringBuffer和StringBuilder都是继承与同一个父类:AbstractStringBuilder
  2. 我们使用StringBuffer中的append()方法会在StringBuffer对象的尾部追加一个内容,这个时候如果我们要追加的内容超出了StringBuffer底层的value[]的容量的话,那么这个时候我们就会自动进行扩容,这个时候我们进行扩容时就会创建出一个新的value[],然后让这个新产生的value[]来代替这个原本的value[],但是原本的StringBuffer对象并没有变
    • 也就是我们的StringBuffer对象进行扩容时,底层value[]会发生改变,但是StringBuffer对象一定不会变
  3. StringBuffer(StringBuilder)----String
    • 我们可以调用String的构造方法,然后将StringBuffer对象作为实参传入构造方法中,就可以将StringBuffer转换为String了
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683306.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号