如果我没记错的话,ArrayList 包含了您添加到列表中的变量所存储的内存位置的值。因此,我的假设是当您调用 ArrayList.clear() 方法时,它仅释放上述内存位置的值,而不释放这些内存位置本身。我将尝试通过一个示例来说明这一点:
假设您有当前的内存状态:
假设您有当前的内存状态:
[Memory location] (type of variable) *value*
[1000] (int) 32
[1002] (int) 12
[1003] (float) 2.5
然后您将它们添加到列表 myList 中,因此它包含指向1000、1002、1003内存位置的指针。
当您调用 myList.clear() 时,指针将被置空,但内存位置1000、1002、1003仍将包含先前给定的值。我错了吗?
ArrayList
永远不包含像int
这样的原始类型,而是包含像Integer
这样的对象。这对于答案来说非常重要。 - Sean Owen