JAVA String 不可变性 博客分类: JAVA Java String
程序员文章站
2024-03-02 10:55:28
...
jdk String 的底层实现基于 char 数组,String 类定义了一个 final 修饰的私有 char 类型数组,用于保存字符串。final 关键字修饰成员变量说明这个变量不可变,但是对于数组来说,final 修饰只能保证该指向数组首地址的变量值不可变,但是不能保证数组内容不可变,因此 String 的不可变性和 char 数组的 final 关键字并没有直接关系。那到底 String 如何维持其不可变性的呢?
事实上,对于这个私有的 char 数组,String 并没有提供任何一个 public 方法直接修改该数组内容,也就是外部调用无法改变 char 数组的内容,所有修改 String 的 public 方法最终都返回了一个新的 String,这就是为什么 String 不可变的真正原因。
事实上,对于这个私有的 char 数组,String 并没有提供任何一个 public 方法直接修改该数组内容,也就是外部调用无法改变 char 数组的内容,所有修改 String 的 public 方法最终都返回了一个新的 String,这就是为什么 String 不可变的真正原因。
推荐阅读
-
JAVA String 不可变性 博客分类: JAVA Java String
-
java String你知道少 博客分类: java 语言 java String
-
linux服务器上安装jdk的两种方法(yum+下载包)(转载) 博客分类: linux 相关JAVA基础知识 linuxjdkyum
-
在java应用中如何用Process和ProcessBuilder 执行命令? 博客分类: 知识点滴 javacommandprocess
-
java调用shell脚本 博客分类: OperationSystemLinuxjavashell oslinuxshelljava
-
JVM Class文件结构 博客分类: JVM jvm虚拟机java
-
项目中死锁问题简单记录 博客分类: java 死锁
-
FastJson相关的问题 博客分类: java fashJson DisableCircularReferenceDetect $ref
-
jvm 调优之jstat 博客分类: java jstat jvm
-
resin不断重启分析 博客分类: java Pool closed dbcpunable to create new native threadoutOfMemoryError