为什么这个Java程序没有显示错误?

时间:2014-10-07 07:11:07

标签: java

考虑以下代码,

我忘了定义方法名称,只是块中的代码。

public class Demo {

    {
    Apple ap;
    // Display price of Winesap.
    System.out.println("Winesap costs " + Apple.Winesap.getPrice()
            + " cents.\n");
    // Display all apples and prices.
    System.out.println("All apple prices:");
    for (Apple a : Apple.values())
        System.out.println(a + " costs " + a.getPrice() + " cents.");
    }

}

是因为java中的块{}定义了一个范围?

  

块{}定义Java中的范围。每次启动新块时,都会创建一个新块       范围。范围确定哪些对象对程序的其他部分可见。它也是       确定这些对象的生命周期。许多其他计算机语言定义了2个一般类别       范围:全球和本地。

1 个答案:

答案 0 :(得分:4)

您所拥有的是实例初始化程序,如section 8.6 of the JLS所述。

在创建实例时,它在任何构造函数的主体之前执行 - 就像字段初始化器一样。