Javalist存自定义类类型存的是什么
时间: 2024-12-28 10:28:43 浏览: 9
### Java 中 `List` 存储自定义类类型的实际存储方式
在 Java 中,当使用 `List` 来存储自定义对象时,实际上是在内存中保存这些对象的引用。具体来说:
#### 创建并初始化列表
为了存储自定义类型的数据,在声明泛型参数化的 `ArrayList` 或其他形式的 `List` 之后,可以向其中添加由用户定义的对象实例。
```java
// 定义一个简单的 Person 类作为示例
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class ArrayListDemo02 {
public static void main(String[] args) {
// 创建 ArrayList 集合用于存储 Person 对象
List<Person> personList = new ArrayList<>();
// 向集合中添加多个 Person 实例
personList.add(new Person("Alice", 30));
personList.add(new Person("Bob", 25));
personList.add(new Person("Charlie", 35));
// 输出当前状态下的personList内容
System.out.println(personList);
}
}
```
这段代码展示了如何创建一个名为 `Person` 的简单类,并将其对象存入 `ArrayList` 中[^1]。
#### 内部机制解析
每当调用 `add()` 方法将新元素插入到基于数组实现的 `ArrayList` 结构里时,JVM 并不会复制整个对象本身;相反,它会把指向堆上分配给该对象空间位置的一个引用地址放入底层数组之中。因此,即使两个不同的变量持有同一个对象的不同副本(即不同引用),它们仍然共享同一份底层数据结构中的属性值。
对于链表式的 `LinkedList` 而言,则会在节点之间建立前后链接关系来维护顺序,同样只记录着各个结点所关联的具体实体的位置信息而非其全部字段拷贝。
这种设计使得我们可以高效地操作大量复杂对象而无需担心性能开销过高的问题,同时也允许我们在不改变原有容器的情况下修改单个成员的状态或行为特性。
阅读全文