String、StringBuffer、StringBuilder的区别

一、String,StingBuffer,StringBuilder是字符串变量还是常量
String :在java中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。String 对象的值是System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。
StingBuffer:StringBuffer是字符串变量,它的对象是可以扩充和修改的。
初始化出的StringBuffer对象是一个空的对象则无法使用。
StringBuffer s = new StringBuffer();
创建带有内容的StringBuffer对象,则可以使用:
StringBuffer s = new StringBuffer(“abc”);StringBuilder:StringBuilder是一个可变的字符序列。
此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。
String、StringBuffer 、StringBuilder 的区别
1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,
2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。 在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全,而StringBuffer则每次都需要判断锁,效率相对更低。

StringBuffer s = null;    
StringBuffer s = “abc”;  
 ②StringBuffer 
    StringBuffer s = null; //结果警告:Null pointer access: The variable result can only be null at this location 
    StringBuffer s = new StringBuffer();//StringBuffer对象是一个空的对象 
    StringBuffer s = new StringBuffer(“abc”);//创建带有内容的StringBuffer对象,对象的内容就是字符串”

二、String,StingBuffer,StringBuilder效率
从高到底的顺序依次是:StringBuilder > StingBuffer > String
因为String是字符串常量,所以它的效率是最低的。而StringBuffer和StringBuilder它们属于变量,是可以改变的对象,每次对字符串的操作,实际上实在一个对象上操作,所以效率更高一些。StringBuffer是线程安全的,考虑到安全问题,相对他的性能会更低一点。由此知道了从效率的角度看,StringBuilder最高,其次是StringBuffer,最后是String字符串常量。 当多个线程使用字符串缓冲区时,使用StringBuffer保证正确的操作,如果是单线程的,建议使用StringBuiler效率更高一些。
三、三者的继承结构
String:不可变字符串;
StringBuffer:可变字符串、效率低、线程安全;
StringBuilder:可变字符序列、效率高、线程不安全;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值