gpt4 book ai didi

android - 是 var str : String mutable or immutable?

转载 作者:IT老高 更新时间:2023-10-28 13:32:58 31 4
gpt4 key购买 nike

我已经在 Kotlin 中声明了一个字符串变量。

var str: String

Kotlin 文档与可变性概念相矛盾。根据文件...var 是可变的。 var is mutable

但是对于 String 它定义为不可变的。 String is immutable

所以请澄清矛盾...

最佳答案

其实Stringvariable是可变的,而StringValue是不可变的。

Appreciate with @cricket_007

让我深入描述一下当你声明变量时发生的事情。

val string1 = "abcd"  
val string2 = "abcd"

enter image description here

如上图和声明所示。

-字符串池是堆内存中的一个特殊存储区域。

-当一个字符串被创建时,如果字符串已经存在在池中,则返回已有字符串的引用,而不是创建一个新对象并返回它的引用。

-如果字符串不是不可变的,用一个引用改变字符串会导致其他引用的值错误。

-现在我们将上面的示例值赋值给变量String1,现在我们可以使用这个变量了。

我们也可以改变值

string1.renameTo("Hi This Is Test")

那么在内存后面发生了什么?
->是的,
如果 “Hi This Is Test”这个字符串可用,它将返回对“string1”的引用
else 它创建新空间并引用“string1

实际上,这就是为什么 String 被称为不可变的原因。

引用 - Link

关于android - 是 var str : String mutable or immutable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44600017/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com