龙空技术网

你真的知道String类的值不能修改的原因吗?

小瓜瓜666 685

前言:

如今我们对“string为什么不能改变”大体比较看重,看官们都需要了解一些“string为什么不能改变”的相关知识。那么小编也在网络上搜集了一些关于“string为什么不能改变””的相关知识,希望小伙伴们能喜欢,兄弟们快快来学习一下吧!

这个问题可能对于一些工作几年的人都回答不上来,今天我们就来聊聊它,为什么不能修改值得原因。

首先我们要先知道一个东西,final修饰的引用变量是不能修改它保存的内存地址,说白了就是final修饰的引用一但指向了一个内存地址,就不能在指向其他内存地址了,但是内存地址里面的值value是可以改变的。

我们看下String源码里面的一个东西:

String在这里定义了一个私有的final类型的char类型的数组,它就是用来保存值来用的,final修饰说明内存地址值一但确定就不能更改,私有的private说明,它不能被对象访问到,意思我们根本无法调用到这个char类型的数组,更不用谈去修改它了。

当然如果你的基础好,你可以使用反射来修改,但那是另外的说法了........

标签: #string为什么不能改变