问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

stringbuffer与stringbuilder的区别?1767

发布网友 发布时间:2023-09-22 23:20

我来回答

5个回答

热心网友 时间:2024-12-01 05:36

二者的区别主要是在运行速度和线程安全这两方面。

1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的

2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。

3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全而StringBuffer则每次都需要判断锁,效率相对更低。

热心网友 时间:2024-12-01 05:36

1. 在执行速度方面的比较:StringBuilder > StringBuffer
2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
3. StringBuilder:线程非安全的
  StringBuffer:线程安全的
当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

对于三者使用的总结:1.如果要操作少量的数据用 = String
       2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
       3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

热心网友 时间:2024-12-01 05:37

java 是 stringbuffer
C#是 stringbuilder

热心网友 时间:2024-12-01 05:37

可变与不可变
  String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。
    private final char value[];
  StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。
    char[] value;
2.是否多线程安全
  String中的对象是不可变的,也就可以理解为常量,显然线程安全。
  AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
  StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。看如下源码:

热心网友 时间:2024-12-01 05:38

java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。
1.可变与不可变
  String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。
    private final char value[];
  StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。
    char[] value;
2.是否多线程安全
  String中的对象是不可变的,也就可以理解为常量,显然线程安全。
  AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
  StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。看如下源码:

public synchronized StringBuffer reverse() {
super.reverse();
return this;
}

public int indexOf(String str) {
return indexOf(str, 0); //存在 public synchronized int indexOf(String str, int fromIndex) 方法
}

  StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。
3.StringBuilder与StringBuffer共同点
  StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。
  抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。
  StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。
  最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
含羞草图片-含羞草(花期图,果期图,欣赏图) 全球气候变暖的后果 全球气候变暖有什么影响 情侣身高差几离米最何适?我167,穿蓝球鞋171,女朋友要多高? 如何禁止u盘传文件 事业单位醉驾会开除吗? excel表格负数金额怎么输入 exce怎么输入负数-excel中输入正负数教程 能让仓鼠跟着走的音乐? ...件和合同都发过去给他了他要我在打1000块钱过去。 我在人人贷款了30000元!合同也签了!但是人家就是没有放款!还让我到一... 哈希率是什么? 快手上有的人在脸上弄个猫耳多或者脸上挂个小东西还可以把眼睛变...3 录快手能把眼睛变的又大又圆的是什么软件3 《学做工工人阶级子弟为何继承父业》epub下载在线阅读,求百度网盘... 魔术,怎么把钥匙放进啤酒瓶啊4 魔术揭秘刘谦怎么把钥匙放进酒瓶里?又拿出来的36 我乡村医生57岁,买了农村养老保险,现在想买乡村医生社保,我该怎么... 吃多少影响胃酸量吗 (需要科学依据) 一拳110公斤什么水平 欣然的近义词是啥4 欣然的近义词是什么51 欣然的反义词。1 请问分手一个半月前男友突然给我支付宝转2000什么意思?要收... 谁知道快手上,,怎么可以把眼睛变得超大,鼻子超宽的,是什么软...4 钥匙放入酒瓶里魔术怎么变的 全家用移动,就是我,我爸我妈都用的移动手机卡,家里就能免费办...1 中国移动送"免费"宽带,是真的还是套路?10 松花粉大蒜油软胶囊能治便秘吗?有时大便干燥吃松花粉也未改善 高达老虎在第几集出现的 欣然的近义词和反义词是什么?66 “String、StringBuffer和StringBui...5 怎样在QQ邮箱里修改其他邮箱 胃为何会经常泛酸?是因为平时饮食不当引起的吗? 欣然的近义词是什么?42 欣然的近义词是什么??63 魔兽争霸混乱之治战役人族第五章求助 高达老虎在哪集出现 大一的时候,办了一张校园移动卡,说是送一年的宽带,我们宿舍用... 在VMware10里装win7 64位旗舰版系统,出现如图画... Mac 安装包vm10.0.0.1安装win7镜像文件时候报... 快手里面能让眼变大又能让头变大的那软件是啥34 快手上用的变脸的瘦脸大眼睛是什么软件??急!!!!!!48 手脚冰凉怎么办?1573 魔兽世界考古周常:得到安息 是多少级的任务?我现在104在npc这里是灰色... 中国八大菜系的评论标准是什么/ 宿迁有什么好玩的地方138 怎么再申请一个 中学生应该弄什么样的短发??? 魔术中大钥匙是怎么进瓶子里去的?19 怎么给视频里的人换脸