在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
来访问变量吗?
答案 0 :(得分:6)
这些变量有哪些属性?
这些是分配了默认值的实例变量。
当TickMarks发生变化时,MiddleTick是否会动态变化?什么时候 这些变量是否已初始化?
否MiddleTick
将使用TickMarks
在MiddleTick
初始化时可用,即在实例创建时。
特别是public boolean runUpdates = true;由于没有初始化 需要因为可以调用StockGraph.runUpdates来访问 变量?
runUpdates
无法直接访问(StockGraph.runUpdates),因为它不是实例字段而不是静态字段。
根据需要和代码可读性,有多种方法可以初始化java中的字段。这篇文章对此有所启发:
答案 1 :(得分:5)
在调用构造函数之前,这些变量没有被初始化,而是在调用super()
之后立即将它们复制到构造函数中。 Java教程,Intializing Fields说(部分),
Java编译器将初始化程序块复制到每个构造函数中。因此,这种方法可用于在多个构造函数之间共享代码块。