繁体   English   中英

在 java 可视化工具中,为什么数组的字符串项有指向它们的指针,而分配给它们的变量却没有?

[英]In the java visualizer, why do String items of an array have a pointer to them, whereas variable assignments to them don't?

我试图理解为什么 java 可视化工具绘制指向分配给字符串的数组项的指针,但在分配给一个字符串时不绘制从变量指向字符串的指针。 这是:带指针的数组不带指针的变量在 java 可视化器中将事物分配给字符串之间的这种二分法对我们的程序有什么影响吗? 我想知道即使在这种指针情况下,字符串是否仍然不可变。 从概念上讲,这些图之间发生的传递方式有什么不同吗?

我试过看看这在 arrays 的上下文中是否是一致的行为,似乎是这样。

Arrays 是 Java 对象,保存在 memory 中,可以使用指针访问。

当一个数组分配给它时,对数组 memory 位置的引用保存在变量中。

因此,当 Java 可视化工具显示数组时,会显示指向每个单独数组项的指针,这些项实际上是 memory 中的对象。

当一个String赋值给一个变量时,会在memory中创建一个新的object,变量存储这个新的object的引用。

因为字符串是不可变的,所以 object 的内容一旦创建就无法更改。 Java 可视化工具在显示变量时不会显示指向原始字符串 object 的指针,因为它已经指向它。

Java 可视化工具以不同方式显示 arrays 和字符串的方式对您的程序的工作方式没有任何影响。 无论是否显示指针,字符串都保持不变。

字符串是一个不可变的 object,它作为一个新的 object 保存在 memory 中并通过引用访问,数组是一个 object,它存储在 memory 中并通过引用访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM