String, StringBuffer和StringBuilder的区别

本文详细解析了Java中的三种字符串类:String、StringBuffer和StringBuilder。解释了它们的特点、使用场景及性能差异,帮助开发者更好地理解如何选择合适的字符串类。
String:
1. String是对象,但是不是原始类型。
2. String为不可变对象,一旦被创建,就不能修改他的值了。
3. 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
4. String是final类,不能被继承。

StringBuffer:
1. StringBuffer是一个可变的对象,对它进行修改的时候,不会像String那样重新创建对象。
2. StringBuffer只能通过构造函数来创建。
3. StringBuffer对象创建后,在内存中就会分配内存空间,并初始保存一个Null。向StringBuffer中赋值时,可以通过它的append方法。
4. StringBuffer是线程安全的。

StringBuilder:
1. StringBuilder与StringBuffer功能类似,但是它是非线程安全的。
2. StringBuilder是JDK1.5时引入的,为StringBuffer补充了一个单个线程使用的等价类,即 StringBuilder。与StringBuffer相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

下面我们来看个小例子就一清二楚了,

eg1. String

String a= "A";
a += "B";

执行过程: String a = "A";这条语句首先在内存中分配一个地址空间,空间大小为1。然后执行a += "B",该过程是连接字符串过程, "A"和"B"在内存中重新分配地址, 然后将a的内存地址指向"AB"的内存地址。

eg2. StringBuilder

StringBuilder sb = new StringBuilder("A");
sb.append("B");

执行过程: StringBuilder不会再次分配内存空间。处理效率比String高的多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值