简单的Java"新"概念问题

jen*_*fer 3 java

编译器new Stock[2];在;{expect 之后显示错误.

public class TestStockUI {
    Stock[] stock = new Stock[2];
    stock[0] = new Stock("Microsoft", "MSFT", 15.69);
    stock[1] = new Stock("Google", "GOGL", 323.98);

    public TestStockUI() { }

}
Run Code Online (Sandbox Code Playgroud)

然后我像下面一样改变了它,导致同样的错误.

public class TestStockUI {
    Stock[] stock = new Stock[2];
    stock[0] = new Stock("Microsoft", "MSFT", 15.69);
    stock[1] = new Stock("Google", "GOGL", 323.98);

}
Run Code Online (Sandbox Code Playgroud)

这解决了问题,但我不知道为什么.

public class TestStockUI {
    Stock[] stock = new Stock[2];
    {
        stock[0]=new Stock("Microsoft","MSFT",15.69);
        stock[1]=new Stock("Google","GOGL",323.98);
    }

}
Run Code Online (Sandbox Code Playgroud)

Isa*_*ett 13

{
    stock[0]=new Stock("Microsoft","MSFT",15.69);
    stock[1]=new Stock("Google","GOGL",323.98);
}
Run Code Online (Sandbox Code Playgroud)

这会创建一个初始化块,这些语句是合法的.前两个例子中它们不合法.

  • (+ 1)或者,他可以将它们移动到构造函数中 (2认同)