String的底层到底是啥,为什么说它不可变????

底层就是一个value数组,String的其余属性和方法基本上都是围绕这个数字展开的。为什么String不可变已经很简单了。应为这是一个final类型的数组。不可变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
StringStringBuffer、StringBuilder 都是 Java 中用于存储字符串的类,它们的主要区别在于线程安全性、可性和执行效率。 1. StringString 类是 Java 中最基本的字符串类,它是不可的,一旦创建就不能被修改。因此,每次对 String 类进行修改操作,都会重新创建一个新的 String 对象,这样会占用大量的内存和系统资源。底层是通过 `final char[] value` 来存储字符串的。 2. StringBuffer 类 StringBuffer 类是一个线程安全的可字符串类,它的内部实现采用了同步锁,所以在多线程环境下可以保证数据的安全性。每次修改字符串时,都会在原有的 StringBuffer 对象上进行修改,而不是创建一个新的对象,这样可以减少系统资源的占用。底层是通过 `char[] value` 来存储字符串的。 3. StringBuilder 类 StringBuilder 类与 StringBuffer 类非常类似,它也是一个可的字符串类,但它不是线程安全的。对于单线程的情况下,使用 StringBuilder 类可以获得更好的执行效率。底层StringBuffer 类一样,都是通过 `char[] value` 来存储字符串的。 因此,如果需要保证多线程的安全性,应该使用 StringBuffer 类,如果是单线程环境下,可以使用 StringBuilder 类,如果需要对字符串进行频繁的修改操作,也应该使用 StringBuffer 或 StringBuilder 类。如果只需要进行字符串的读取操作,可以使用 String 类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值