【问题标题】:would the variable 'x' in this piece of code be stores in stack memory, heap memory, or both?这段代码中的变量“x”是存储在堆栈内存、堆内存还是两者中?
【发布时间】:2019-09-12 02:05:45
【问题描述】:

所以关于变量int x。在这个类的开头,int xString s 存储在堆内存中。但是,当构造函数启动时,int x 是否存储在堆栈内存中 AND 由于构造函数在技术上是一种方法,因此是不是?

public class A {
    int x;
    public String s = "";

    public A(int y) {
        x = y;
    }
}

【问题讨论】:

  • 构造函数不是方法,即使是,也不会影响实例变量x的存储位置。

标签: java heap-memory activation-record


【解决方案1】:

y 存储在堆栈中,因为它是该方法的作用域变量。 x 只是在堆上就地修改。

【讨论】:

  • 所以 x=y 根本不将 x 存储在堆栈中,尽管在方法中?
  • CosmicCat,值从y(栈上)复制到x(堆上)。
  • 堆栈是由方法中定义的变量构建的,而不是方法中访问的所有变量。
猜你喜欢
  • 2017-11-05
  • 2020-01-10
  • 2011-02-01
  • 1970-01-01
  • 2014-02-17
  • 2016-03-25
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
相关资源
最近更新 更多