【问题标题】:Array of Objects Memory Allocation(Stack And Heap)对象数组内存分配(堆栈和堆)
【发布时间】:2017-11-08 11:45:51
【问题描述】:

我已经初始化了一个类对象数组,我很好奇它们是如何在内存中分配的(堆栈和堆),我从教科书中找到了一段代码,它绘制了下面左侧的内存分配。

我的问题是:为什么内存分配不是我画在右边的那个,在下面的代码中,new Person[]{new Person("Simon", 20)...}new Person 对象会将其内存地址分配给per[0],但是,per[0] 是在执行Person[] per = new Person[3] 时在堆中创建的。

类对象数组的初始化

 class Person {
        private String name;
        private int age;
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

    public class Main {
        public static void main(String[] args) {
            Person[] per = new Person[]{new Person("Simon", 20), new Person("John", 21), new Person("Willy", 22)};
        }
    }
  1. Left(TextBook)

  2. My Thought

【问题讨论】:

    标签: java arrays object memory memory-management


    【解决方案1】:

    为什么内存分配不是我右边画的,

    它在右边,但是如果你要使用这个值

    per
    

    per[0]
    

    该引用将被带入堆栈。

    【讨论】:

    • 嗨彼得,谢谢你的回复,这是我在课本上得到的全部代码,也就是说我没有用per[0]的值做其他事情,但是作者画了左边那张图让我很困惑...如您所见,我理解的是我在右边画的那张图,我真的不知道我应该去哪一张...
    • @Ruizhi 数组不是很有用,除非你访问它的元素。
    猜你喜欢
    • 2019-05-17
    • 2011-10-09
    • 2011-05-28
    • 2017-01-04
    • 2012-12-05
    • 2018-09-17
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多