靜態(tài)初始化塊
public class cat2{
static int ?f;
static double f2=11.5;
static{
System.out.println("cat2類的整數(shù)f靜態(tài)初始化塊已執(zhí)行。");
int f=11;
}
? ? public void show(){
? ? System.out.println("靜態(tài)變量f:"+f+", ?靜態(tài)變量f2:"+f2);
? ? }
public static void main(String[] args){
cat2 catty= new cat2();
System.out.println(catty.f);
System.out.println("用對(duì)象名訪問(wèn)靜態(tài)變量f2:"+catty.f2);
catty.show();
? ?}
}
運(yùn)行結(jié)果:
cat2類的整數(shù)f靜態(tài)初始化塊已執(zhí)行。
0
用對(duì)象名訪問(wèn)靜態(tài)變量f2:11.5
靜態(tài)變量f:0, ?靜態(tài)變量f2:11.5
為什么會(huì)這樣????我的靜態(tài)初始化塊沒(méi)寫錯(cuò)吧??
2015-08-17
你記住在Java中{}通常代表了作用域,我們稱為“塊”,常見(jiàn)的有類,方法,初始化塊,try...catch等。
靜態(tài)初始化塊也是一個(gè)獨(dú)立的作用域,所以你可以在其中定義一個(gè)同名變量而不報(bào)錯(cuò),因?yàn)樗屯膺叺膄作用域不同。
不過(guò)因?yàn)殪o態(tài)初始化塊是局部作用域,所有可以可以訪問(wèn)類成員,這時(shí)你必須去掉類型聲明,否則會(huì)變成變量的聲明而非引用。
2015-08-17
不能在靜態(tài)初始化快中賦值時(shí)添加類型。
static{
System.out.println("cat2類的整數(shù)f靜態(tài)初始化塊已執(zhí)行。");
f=11;
}
這樣就好了