String\StringBuffer\StringBuilder

本文深入探讨了Java中的String、StringBuffer和StringBuilder类的特性与区别,包括不可变性、线程安全性和性能考量,为开发者提供了在不同场景下选择合适字符串类型的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String

本质是字符数组。

特点:

1.String是一个final修饰的类,不能够被继承。

2.类似"abc"这样的字符串字面值常量也是String类的对象,既然是对象,就可访问String的成员。

3.它们的值在创建后不能被更改,但是可以被共享。

4.字符串缓冲区支持可变字符串 【StringBuffer/StringBuilder】

5.如果字符串的拼接操作非常频繁,那么String的效率不高,会在常量池创建大量的字符串,所以建议使用字符串缓冲区。

String s = "abc" 和 String s = new String("abc"); 的区别: String s = "abc",只在方法区开辟内存空间;

String s = new String("abc"); 同时在方法区和堆区开辟内存空间;

我们一般使用 String s = "abc" 的方式创建字符串对象。

StringBuffer

线程安全的可变字符序列。

一个类似于 String 的字符串缓冲区,不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

特点:

1.可变长的字符序列;

2.线程安全,效率低;

在线程(工作线程)中,“安全性”和“效率”二者只能取其一。

StringBuilder

线程安全的可变字符序列。

与StringBuffer相同,可以通过某些方法调用来改变序列的长度和内容。

经典面试题解析:

String,StringBuffer,StringBuilder三者的区别。

String的特点: 线程不安全, 一旦在方法区创建就不会被更改,可以给多个对象引用共享,在做大量字符串拼接的时候效率低。

StringBuffer,StringBuilder 是一个字符串缓冲区,可以改变字符串的长度和内容,在做大量字符串拼接的时候不会开辟新的空间。

StringBuffer,StringBuilder的区别

StringBuffer 线程安全,效率低。

StringBuilder 线程不安全,效率高。

转载于:https://juejin.im/post/5cbefd4fe51d456e2f77f125

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值