在C++中,我们通常可以在堆栈上创建对象。为什么Java决定避免使用这个特性呢?
为什么Java决定避免这个功能?
这更简单。Java不会说“为什么不添加它?”Java设计者通常会等到真正需要添加一个功能时再添加。(在某些方面来说,这可能是一件好事)这意味着要成为Java专家,需要学习和理解的功能最少。
有一件事情你不必担心,那就是当你的方法返回后,你的对象会发生什么。例如,在Java中,你可以这样做:
static String str; // In Java str is a reference.
static void setS() {
String x = "Hello";
str = x; // x and str are references to an object on the heap so no problem.
// if str was now a reference to an object on the stack,
// you could have a corruption issue.
}