简述string对象,StringBuffer、StringBuilder区分,string创建了多少个对象

文章 3年前 (2021) admin
0

Q1:“String、StringBuffer和StringBuilder”之间的区别是什么?

1、类型不同:String是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。StringBuffer是字符串变量,它的对象是可以扩充和修改的。StringBuilder是一个可变的字符序列。2、作用:String类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。StringBuffer可以存储和操作字符串,即包含多个字符的字符串数据。StringBuilder类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。扩展资料:StringBuilder有四个构造函数:StringBuilder() value内容为空,并设置容量为16个字节。StringBuilder(CharSequece seq) 使用seq初始化,容量在此基础上加16。StringBuilder(int capacity) 设置特定容量。StringBuilder(String str) 使用str初始化,容量str大小的基础上加16。参考资料来源:百度百科-string参考资料来源:百度百科-StringBuffer参考资料来源:百度百科-StringBuilder

Q2:简述string对象,StringBuffer、StringBuilder区分?

string是final的,内部用一个final类型的char数组存储数据,它的拼接效率比较低,实际上是通过建立一个StringBuffer,让后台调用append(),最后再将StringBuffer toSting(),每次操作Sting 都会重新建立新的对象来保存新的值.这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的。StringBuffer也是final,线程安全的,中采用一个char数组来保存需要append的字符串,char数组有一个初始大小,当append的字符串长度超过当前char数组容量时,则对char数组进行动态扩展,也即重新申请一段更大的内存空间,然后将当前char数组拷贝到新的位置,因为重新分配内存并拷贝的开销比较大,所以每次重新申请内存空间都是采用申请大于当前需要的内存空间的方式,这里是2倍。StringBuilder,线程不安全。

Q3:请说明string,stringbuffer和stringbuilder的区别

1.执行速度比较:StringBuilder Stringbuffer2。stringbuffer和stringbuilder,它们是字符串变量和可变对象。每当我们使用它们对字符串进行操作时,我们实际上是对一个对象进行操作,而不像string那样会创建一些对象来进行操作,所以速度很快。3.StringBuilder:线程不安全StringBuffer:线程安全。当我们被StringBuffer中的多个线程使用时,JVM不能保证StringBuilder的操作是安全的。虽然是最快的,但是可以保证StringBuffer能够正常运行。当然,在大多数情况下,我们都是在单线程下操作,所以大多数情况下建议使用StringBuilder而不是StringBuffer,这就是速度的原因。三个使用总结:1。如果要操作少量数据,请使用=String 2。stringbuffer区域下的单线程操作操作大量数据=StringBuilder 3。stringbuffer区域下的多线程操作操作大量数据=StringBuffer。

Q4:stringbuffer与stringbuilder的区别?

两者的区别主要在运行速度和线程安全上。1.StringBuffer和StringBuilder中的方法和函数完全等价。2.StringBuffer中的方法大部分都是通过synchronized关键字修改的,所以是线程安全的,而StringBuilder如果不做这种修改,可以认为是线程不安全的。3.StringBuilder在单线程程序中效率更高,因为它不需要被锁定,不具备多线程安全性,而StringBuffer每次都需要判断锁,效率相对较低。

Q5:Java中String,StringBuilder和StringBuffer的区别

1.StringBuffer和StringBuilder中的方法和函数是完全等价的;2.StringBuffer中的方法大部分都是通过synchronized关键字修改的,所以是线程安全的,而StringBuilder如果不做这种修改,可以认为是线程不安全的。3.StringBuilder在单线程程序中效率更高,因为它不需要被锁定,不具备多线程安全性,而StringBuffer每次都需要判断锁,效率相对较低。

Q6:String Stringbuffer和StringBuilder的区别?

ava.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含“startle”,而 z.insert(4, "le") 将更改字符串缓冲区,使之包含“starlet”。通常,如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。只要发生有关源序列(如在源序列中追加或插入)的操作,该类就只在执行此操作的字符串缓冲区上而不是在源上实现同步。每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。 java.lang.StringBuilder一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。例如,如果 z 引用一个当前内容为“start”的字符串生成器对象,则该方法调用 z.append("le") 将使字符串生成器包含“startle”,而 z.insert(4, "le") 将更改字符串生成器,使之包含“starlet”。通常,如果 sb 引用 StringBuilder 的实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。 每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。

版权声明:admin 发表于 2021年10月23日 下午3:35。
转载请注明:简述string对象,StringBuffer、StringBuilder区分,string创建了多少个对象 | 热豆腐网址之家

相关文章