为什么对象初始化使用new
关键字称为动态内存分配,因为编译时本身我们需要知道该对象所需的内存。
另请说明在堆和堆栈中执行ClassA object = new ClassA();
时会发生什么。
答案 0 :(得分:9)
动态分配所有 Java对象。你总是传递对它们的引用。这就是语言的设计方式。当你这样做时:
ClassA obj = new ClassA();
然后在堆上分配对象,并且对它的引用存储在堆栈中(当然,假设它在方法内)。这意味着您可以随时传递对象,而不必担心存储它们的位置。
答案 1 :(得分:5)
它是动态的,因为你不知道何时需要分配 - 你根据需求分配。
另请注意,您知道该对象需要多少内存,但不知道该对象的成员需要多少。这可能只能在运行时确定(例如可变大小的数组)。
答案 2 :(得分:0)
如果你有一个JMath
的类,并且想要在运行时获得所有对象(动态分配),那么你刚写了
ArrayList<JMath> J = new ArrayList<JMath> ();