【发布时间】:2020-10-24 23:26:02
【问题描述】:
当您使用传递的字段调用方法时,会在堆栈中创建该字段值的副本。这意味着如果它是原始类型,通过更改此变量的值,您将不会更改传递的字段的值。但是,如果您更改堆中的值,则引用将是副本,但仍然引用相同的内存,这意味着您可以传递字段的值。
我的问题是这些临时变量存储在哪里?如果它们是引用,它们应该正确存储在堆栈中吗?但是堆栈具有静态内存分配,如果在代码运行时调用方法,它们必须存储在动态分配的内存中对吗?所以是矛盾的。
对不起,如果这个问题听起来很愚蠢,我是一名新手程序员,并且正在尝试正确理解程序如何使用内存。
【问题讨论】:
-
"我是一名新手程序员,正在尝试正确理解程序如何与内存一起工作" 我的建议是:不要花费(有限的)努力去尝试去理解它。反正还没有。 Java 尽其所能有意抽象出内存管理方式的确切细节。理解它对你没有帮助,对于新手来说更是如此。
-
'堆栈有静态内存分配'是这里唯一的矛盾。元素被动态地压入堆栈并从堆栈中弹出。引用与原语相同。不要过于复杂。
-
请勿在此发表个人言论。我正在努力帮助你。我不需要你的建议。