可以在堆栈上创建Java中用户定义类的对象,而不是像在C ++中那样动态地在堆上创建吗?

时间:2015-02-07 21:14:48

标签: java

Class A {
  // blah blah
}

现在,每当我们需要创建此类的实例时,我们都会这样做:

A a = new A();

在c ++中有两种方式:

1. A a(10); // Created on Stack. Assume that the constructor takes an int argument 
2. A a = new A(); // Created on Heap

如何在堆栈上创建用户定义的Java对象?

1 个答案:

答案 0 :(得分:2)

不,不是。所有方法本地原始类型和引用都放在堆栈中,所有对象都放在堆中。没有ifs和buts关于它。

我能想到他们为什么这么做的一个原因是它删除了一个常见错误:将基于堆栈的对象传递给存储对该对象的引用的方法。然后,对象超出范围,从堆栈中删除,并且引用指向未定义的内容。接下来当你想要访问"对象"通过引用,你处于一个受伤的世界,因为物体不再存在 - 而且没有人知道它是什么。