ArrayList内存存储格式问题

来源:2-2 List接口及实现类ArrayList的方法应用(下)

慕无忌4072121

2022-11-17 14:18:56

老师:

ArrayList<String> array = new ArrayList<>();

array.add("你好");

array.add("世界");


请问老师 声明一个array 对象,会在栈区间引向堆区间开辟的一块空间里面存的你好,世界的字符串这块内存地址,还是栈区间引入的是常量池的字面值?

写回答

1回答

好帮手慕小蓝

2022-11-17

同学你好,ArrayList底层是数组,数组中存储的是对象的引用而不是字面值。

根据同学提供的代码,正确的应该是:array变量位于栈空间,指向堆空间的ArrayList类型对象,对象中维护了一个String类型数组的引用,该数组也存储在堆空间中。数组中存储对象时,存储的是“你好”和“世界”两个对象的引用,这两个对象位于常量池中。

所以实际存储的并不是字面值而是对象引用。

祝学习愉快~

0

0 学习 · 9886 问题

查看课程