【问题标题】:How class member variables(instance variable) can be initialized if the memory is given only during object initialisation?如果仅在对象初始化期间给出内存,如何初始化类成员变量(实例变量)?
【发布时间】:2019-09-03 15:20:01
【问题描述】:

正如我们所知,一个类可以拥有只能通过 new classname() 获取内存的对象。 那么如何为类的实例分配一些值。

class Work{
   public int a = 55;
}

class DoStuff{
      public static void main(String[] args){
      Work obj = new Work(); // intialises variable now
      System.out.println(obj.a) // a already has value 55
   }
}

【问题讨论】:

  • 使用getter和setter

标签: java class oop


【解决方案1】:

Java中初始化块和构造函数的执行顺序

  • 当类第一次在 JVM 中加载时,静态初始化块将运行
  • 初始化块按照它们在程序中出现的顺序运行。
  • 实例初始化块在类被初始化和构造函数被调用之前执行。它们通常放置在大括号内的构造函数上方。

https://www.geeksforgeeks.org/order-execution-initialization-blocks-constructors-java/

因此,在您的情况下,public int a = 55;Work 类的构造函数之前被调用。 JVM 首先为一个对象保留内存,然后开始初始化所有对象属性。

【讨论】:

    猜你喜欢
    • 2022-12-09
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多