jna*_*llo 5 java for-loop memory-management
我想详细了解Enhanced For Loop如何在Java中工作(假设我确实了解了这个循环的基本用法以及它是如何工作的).
给出以下代码:
String[] a = {"dog", "cat", "turtle"};
for (String s : a) {
out.println("String: " + s);
s = in.readLine("New String? ");
}
Run Code Online (Sandbox Code Playgroud)
它实际上并没有修改原始列表'a'.为什么不?内存管理如何工作?这不是'a [i]'的同一个存储单元的引用吗?
我在oracle文档中读到,增强for循环不能用于从原始数组中删除元素,这是有道理的.修改值是否相同?
提前致谢
Oli*_*rth 10
这不是'a [i]'的同一个存储单元的引用吗?
原来,是的.但随后in.readLine会生成对新String对象的引用,然后使用该对象进行覆盖s.但只是s被覆盖,不是底层字符串,也不是数组中的引用.