gpt4 book ai didi

java - 我们在 java 的 main() 方法中声明的变量是否被实例化为对象?

转载 作者:行者123 更新时间:2023-11-29 07:39:58 29 4
gpt4 key购买 nike

我想问的是,如果我在 Java 类的 main() 中声明了一个数据成员,它会被实例化为该类对象的对象缓冲区吗?例如:

class Demo{

int x=10;
public static void main(String... s){

int y=20;
Demo d=new Demo();
}
}

这里,int y会在类Demo的对象d中被实例化。如果没有,内存是如何分配给它的?它会被视为局部变量吗?

最佳答案

不,ymain 方法中被实例化为堆栈上的简单局部变量,因此它仅在该范围内可用。与任何其他局部变量一样,它会在其范围退出时被销毁,因此在这种情况下,ymain 退出时被销毁。

同样,dmain中的一个局部变量,但是它指向的对象(一个Demo 对象,在这种情况下)在堆上分配。就像堆上的任何其他对象一样,当没有其他引用指向它时,它将被垃圾收集。当然,在这种情况下,d 是从 main 方法的本地范围内指向它的引用,因此只有当 d 不再指向它(即在 main 退出之后)。

然后多线程增加了额外的复杂性,这使得对象生命周期等更难推理。

关于java - 我们在 java 的 main() 方法中声明的变量是否被实例化为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31356811/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com