String类型值不可变的原因

本文探讨了Java中String类型值不可变的真实原因,揭示了final关键字对于value数组的影响以及为何String类被声明为final。尽管final修饰的value数组引用不可变,但其内容理论上仍可修改。实际上,由于String类的私有化和不可继承特性,确保了String对象的不变性,从而保证了线程安全和缓存友好的特性。
摘要由CSDN通过智能技术生成

String类型值不可变的原因

先看底层(1.8为例)

public final class String
implements java.io.Serializable, Comparable, CharSequence

private final byte[] value;

误区:不能修改的原因是因为final关键字修饰了value数组。final修饰value数组只能说明value所指的引用地址不可修改,数组对应堆中的内容是可以变的
例如:

final int[] array = {1, 2};
int[] test = {1, 2, 3};
array = test //error

array[0] = 2; //ok
// {2, 2}

真实原因:

  • private修饰,没有暴露可以修改的方法
  • final修饰String类,禁止继承该类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值