java中预构造函数初始化变量的属性

时间:2015-06-08 01:11:00

标签: java

在Java中,可以在调用构造函数之前初始化编程变量。

public class StockGraph extends JPanel {

    public boolean runUpdates = true;
    double TickMarks = 18;
    double MiddleTick = TickMarks / 2;
    double PriceInterval = 5;

    double StockMaximum;
    double StockMinimum;

    Random testStockValue;

    DecimalFormat df = new DecimalFormat("#.000");

    LinearEquation StockPriceY;

    public StockGraph(int AreaInterval, int Time, int StockID) {

    }
}

这些变量有哪些属性?

MiddleTick更改时TickMarks会动态更改吗? 这些变量何时初始化?

特别是public boolean runUpdates = true;。因为不需要初始化,因为可以调用StockGraph.runUpdates来访问变量吗?

2 个答案:

答案 0 :(得分:6)

  

这些变量有哪些属性?

这些是分配了默认值的实例变量。

  

当TickMarks发生变化时,MiddleTick是否会动态变化?什么时候   这些变量是否已初始化?

MiddleTick将使用TickMarksMiddleTick初始化时可用,即在实例创建时。

  

特别是public boolean runUpdates = true;由于没有初始化   需要因为可以调用StockGraph.runUpdates来访问   变量?

runUpdates无法直接访问(StockGraph.runUpdates),因为它不是实例字段而不是静态字段。

根据需要和代码可读性,有多种方法可以初始化java中的字段。这篇文章对此有所启发:

Initializing Fields in Java

答案 1 :(得分:5)

在调用构造函数之前,这些变量没有被初始化,而是在调用super()之后立即将它们复制到构造函数中。 Java教程,Intializing Fields说(部分),

  

Java编译器将初始化程序块复制到每个构造函数中。因此,这种方法可用于在多个构造函数之间共享代码块。