【String类是不可变的】

  • 不可变对象:一个对象被创建后,状态不能改变,则认为该对象被认为是不可变的
  • String类是不可变类,一个String对象被创建以后,包含这个对象中的字符串序列是不可改变的。

String类为什么不可变

阅读String类的源代码可知:

  • char[ ]字符数组被final修饰代表它不可指向新的数组,不能代表数组本身的数据不能被改变。它还被private修饰,且String没有暴露和提供任何修改字符数组的方法。
  • String类型被final修饰了代表其不可被继承,从而杜绝了子类覆盖父类行为的可能。

:自JDK1.9版本开始,String则以byte[ ]存储(目的是为了节省内存)在这里插入图片描述

String类不可变的优点

  • 保证字符串常量池复用的可靠
  • 哈希码只需要计算一次,可以放心使用和哈希计算相关的对象
  • 不可变对象是线程安全的

"可变"字符串StringBuilder;StringBuffer

  • 相同点:都是可变字符串,均继承AbstractStringBuilder父类
  • 区别:StringBuilder:线程不安全,性能好; StringBuffer:线程安全(每个方法都加synchronized锁),性能差
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值