这个问题是关于 Java,以及如何创建、传递和“删除”对象。
据我所知,当你想创建一个对象时,你使用“new”关键字。根据我的理解,这个操作符 (new) 为对象分配内存,= 操作符将引用分配给这个对象在内存中的位置,给你给它的变量名。
例如,假设您像这样在 Java 中创建了一个数组。
int[] arrayX = new int[size];
的=
操作者现在存储参考存储器阵列到变量名arrayX
。
这一切都很好。
现在让我们考虑方法(函数)。
首先,根据我的理解,当您调用一个方法时,会在堆栈上为该方法的变量和进程分配内存,当该方法返回时,堆栈上的实例将被关闭/删除/放入垃圾中。但是,这并没有解释如何使用 return 关键字将在方法中创建的对象(例如数组)返回到调用者的作用域。
据我了解,由于该方法正在返回,因此其堆栈中的数据将被删除。因此,在此方法范围内创建的数组也将被删除。因此,返回到数组位置的引用将指向“垃圾”值。然而,情况显然并非如此。在 Java 中,如果您返回一个对象,则可以继续使用它。
这让我对如何创建、存储和返回对象感到困惑......
创建的对象是否总是存储在永久内存中?或者
确实的return
操作者移动从方法的临时堆叠到调用者的堆栈中的数组或对象?
如果第二种情况为真,那么在方法返回给调用者(但不返回对象)后,方法中创建的对象是否被删除?在这第三种情况下,这意味着人们不应该担心在方法中创建对象,因为这些对象将被删除。因此,如果一个程序要调用一个方法 1000 次,我们就不必担心内存会被我们只使用一次的对象填满。
我已经浏览了 edX 上提供的 Java 课程,甚至阅读了一本书(虽然没有完成),但仍然没有找到答案,所以我很感激你的意见(如果你知道的话)。
编辑:请注意,这个问题询问 3 个单独的问题:1. 对象和原语存储在哪里 2. new 运算符具体做什么 3. 返回运算符做什么
莫回无
青春有我
相关分类