常量字符串为什么不能改变,字符串常量正确表示方法

首页 > 数码 > 作者:YD1662024-04-26 12:19:53

常量字符串为什么不能改变,字符串常量正确表示方法(1)

我们在学习java基础时,都知道java源码类String是final类代表字符串,是字符串常量,根据常量的定义,一旦定义后值是不可变的,所以它是不可变对象,一旦被创建以后,就不能修改它的值。

那么我们在开发代码时,将之前定义好的字符串重新赋值后,你会发现字符串值确实发生了变化。

例如

常量字符串为什么不能改变,字符串常量正确表示方法(2)

输出的结果却是这样

常量字符串为什么不能改变,字符串常量正确表示方法(3)

可以看到s这个字符串值发生了改变。

常量字符串为什么不能改变,字符串常量正确表示方法(4)

那么从结果上看值是改变了,但为什么说String字符串对象是不可变的呢?

原因在于例子中的字符串s只是一个 String 对象的引用,并不是对象本身,当执行 s = “123”; 创建了一个新的对象 “123”,而原来的 “abc” 还存在于内存中,所以只是s的引用地址发生了变化。

常量字符串为什么不能改变,字符串常量正确表示方法(5)

所以对于已经存在的String字符串对象的值进行修改都是重新创建一个新的对象,然后把新的值保存进去。这就是上面为什么字符串s的值改变的原因。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.