【问题标题】:is constructor depend on 'new' keyword to initialize the instance variable [closed]构造函数是否依赖于'new'关键字来初始化实例变量[关闭]
【发布时间】:2018-08-26 05:32:15
【问题描述】:
class Abs
{
int x;
public static void main(String []args)
{
 // i'm not using 'new' keyword here 
}

}

编译后,实例变量'x'会用它的默认值初始化吗?如果'new'关键字用于在堆中分配内存,那么'x'如何门内存......如果不是,则意味着构造函数依赖于'new'关键字来初始化实例变量?

【问题讨论】:

  • x 尚未定义。当您使用 new Abs() 创建一个新对象时
  • public static void main 不是构造函数,您也不能从其中访问Abs#x

标签: java oop memory-management


【解决方案1】:

你误解了 new 关键字和构造函数的概念。

检查它是否对你有用 new 关键字用于创建新的内存块,我们可以在其中使用构造函数存储所有变量和方法。因为所有变量都将存储在堆栈中,方法将存储在堆中。

例如:NewClass obj = new NewClass(); 在此代码中,new 关键字将为关键字后提到的类类型创建一个新的内存块,并且构造函数会将所有变量和方法添加到该内存中。该内存有一些地址来引用地址 obj 用作该地址的名称,以便我们可以使用对象名称调用该类的所有资产。并且希望您知道我们可以为单个类创建“n”个对象,并且每个对象都将有一个单独的内存块。

关于您的问题,在此代码中 x 将不会被定义,直到您创建像这样的实例 new Abs();。

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多