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类型数组的引用,该数组也存储在堆空间中。数组中存储对象时,存储的是“你好”和“世界”两个对象的引用,这两个对象位于常量池中。
所以实际存储的并不是字面值而是对象引用。
祝学习愉快~
相似问题