java中括号的凝问

来源:百度知道 编辑:UC知道 时间:2024/07/05 15:32:15
public class Parcel9{
public Destination dest(final String dest, final float price){
return new Destination(){
private int cost;
//此处起的括号(A)
{
cost = Math.round(price);
if(cost > 100)
System.out.println("Over Budget!");
}//此处结束的括号(B)
private String label = dest;
public String readLabel(){return label;}
};
}
public static void main(String[] args){
Parcel9 p = new Parcel9();
Destination d = p.dest("Tanzania" , 101.395F);
}
}

请问这两个括号起什么使用的,为什么我不要这两个括号就不正确了.
我知道是一句,但是具体是为什么要在这里加一个括号,又没有if,for之类的语句.我也才学编程不久,望各位指点.

初始化的作用。
创建该类的时候,会先于构造函数执行。
如:
class A
{
int b = 1;
}
相当于:
class A
{
int b;
{
b = 1;
}
}
但后者还可以加上其它语句。
public class A
{
int b;
{
System.out.println(b);
b = 1;
}
public A() {
System.out.println(b);
b = 2;
}
public void print() {
System.out.println(b);
}
public static void main(String[] args) {
new A().print();
}
}
执行该类的main() 将输出:
0
1
2

废话啊,一句啊