jdk源码系列之String的不变性

本文深入探讨了Java中String类的不变性原理,解释了为何String对象的值一旦创建便不可改变,以及这种特性如何影响字符串操作。通过源码分析,揭示了String类的设计原则,包括final修饰符的作用和char数组的不可变性。
摘要由CSDN通过智能技术生成

String的不变性

什么是String 的不变性:

所谓String 的不变性是指String类的值一旦被初始化就不能被修改,如果再次修改就会产生一个新的类。


在这里插入图片描述
debug运行发现:虽然str的值表面上是更改了,但是实际上str 的地址已经变了,这就说明str的值已经不是原来的那个了,而是一个全新的对象了
在这里插入图片描述 在这里插入图片描述

什么导致了String的不变性:

  • 我们打开String 的源码分析

在这里插入图片描述

  1. 首先我们可以看出 String类是由 final 这个关键子修饰的 这就说明了String 类绝不可能被继承,换而言之任何对String的操作方法都不会被继承覆写。
  2. String 底层其实是用 一个char类型的数组value来保存数据值,value是被final修饰了的,这就表明value的值是不可更改的,还有就是value同时还是被private修饰的,并且String类中并没有开放对value赋值的方法 ,这也说明了 value的值一旦确定,就无法更改。

从以上两点就说明可以 String 为什么“不变”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值