记录一下String、StringBuffer以及StringBuilder之间的区别

String

String类是不可变的类,即一旦创建一个String类后,包含在这个对象中的字符序列是不可改变,直至这个对象被销毁。

下面的代码如果觉得没什么问题的话,那么就错了,本来我以为这是正确的,但却并不是的!!!

String demo = "twelvet";
demo = "new twelvet";
// 打印出来的demo为new twelvet,有没有什么问题呢???
System.out.println(demo)

当我们再次给demo赋值时,String类并不是直接重新进行赋值,而是重新生成一个的实例对象,并在内存中指向“new twelvet”这个字符串,demo则指向最新生成的实例对象,之前的实例仍然是存在的

StringBuffer

StringBuffer是一个字符序列可变的字符串,当它被创建后,是可以通过所提供的append()、insert()、reverse()、setCharAt()、setLength()等方法去改变原有的字符序列。当你觉得可以了,那么就可以调用它的toString()方法将其转换为一个String对象。

简单看下它的操作

StringBuffer demo = new StringBuffer("hello");
demo.append("twelvet");
// demo打印结果为:hello twelvet
System.out.println(demo.toString());

通过上面的解释和操作,相信也有所了解了吧,它并没有像String那样重新实例一个对象,而是通过提供的方法连接出新的字符串!!!

StringBuilder

最后一个StringBuilder,不用多说,StringBuilder也是一个一个字符序列可变的字符串的类,和StringBuffer相比较其实是差不多的,无论是构造器还是方法!!!不同点就是StringBuffer是线程安全的,而StringBuilder则不是,所以StringBuilder的性能略高。

StringBuffer是如何实现的线程安全

大家可以点进去StringBuffer,可以很清楚的发现synchronized这个关键词,可以和StringBuilder一起去看看,区别就是在这里!!!
实践为真理,胡说都是扯淡,这里还请大家动手去看看了,就不贴出相关“真理“了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值