我正在使用 Java
public class MapsConfusion {
public static void main(String[] args) {
HashMap< Integer, ArrayList<String>> map = new HashMap<>();
for (int i = 0; i < 15; i++){
ArrayList<String> lst = new ArrayList<>();
lst.add("something");
lst.add("something2");
map.put(i, lst);
}
for(int j = 0; j < 11; j++){
System.out.println(map.get(j));
}
}
}
它的工作方式是,每次循环时都会创建一个新 arraylist。这是我的问题,
考虑指针,当您声明一个新的 Arraylist<>
时每次,您都在创建一个新 Arraylist
在一个新地址我是正确的吗?
其他问题:列表不是只存在于for loop?
范围内吗?那么当我执行另一个(最后一个)for 循环时,仍然 是如何访问的?
最佳答案
1个问题
是的,您总是创建一个新对象,因此创建一个新地址。
有关更多信息,请参阅:https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html
2个问题
只要至少有一个变量指向它,ArrayList 就会存在。在这种情况下,只要 map
存在并且 main 方法运行。
这里是关于对象生命周期的更多信息:http://www.dummies.com/programming/java/the-life-cycle-of-a-java-object/
关于java - 这种情况下重新实例化是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920753/