WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院WEB开发Jsp 静态和实例初始化块的使用说明 阅读

静态和实例初始化块的使用说明

 2008-01-05 08:54:04 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鎼痪褔鏌曟繝蹇曠窗闁煎壊浜滈—鍐偓锝庡墮娴犙勭箾閸喎鐏ユい鏇樺劦椤㈡瑩鎮℃惔銇帮拷
核心提示: 对象通常是有状态的,比如一个员工有姓名、年龄等字段,静态和实例初始化块的使用说明,我们一般使用构造器对对象进行状态设置,本文将介绍使用静态和实例初始化块来对对象进行状态初始化的工作,因此只会被执行一次,下面给出优化过的代码, 首先我们来看一个简单的例子,代码如下:public class SmallSquares

   对象通常是有状态的,比如一个员工有姓名、年龄等字段。我们一般使用构造器对对象进行状态设置,本文将介绍使用静态和实例初始化块来对对象进行状态初始化的工作。

   首先我们来看一个简单的例子,代码如下:
public class SmallSquares
{

   PRivate static final int LIMIT = 10;

   private static final int[] square = new int[LIMIT];

   public SmallSquares()
   {
     for (int i = 0; i < LIMIT; i++)
     {
       square[i] = i * i;
     }
   }

   public static int getSquare(int i)
   {
     if (i < 0 i > LIMIT)
     {
       System.out.println("Error:the i should between 0 to 10");
       return -1;
     }
     return square[i];
   }

   public static void main(String[] args)
   {
     new SmallSquares();
     System.out.println("3 squared is " + getSquare(3));
   }
}
这个小程序用来计算0-10的平方,这个程序是在构造器中对数组进行初始化的。其实这个构造器的唯一目的就是来初始化这个数组的。可是我们仔细考虑一下,这个类的功能比较简单,内部的状态也不复杂。但是假如要依靠构造器来初始化状态的话,显然不合适。我们每次必须要首先调用SmallSquares()才可以让程序工作,不然会出现NullPointerException。考虑用static初始化块来完成这个功能,使用它的话我们就可以不用构造器了,由于是static的,因此只会被执行一次。下面给出优化过的代码,注重绿色部分。
public class SmallSquares
{

   private static final int LIMIT = 10;

   private static final int[] square = new int[LIMIT];

   static
   {
     for (int i = 0; i < LIMIT; i++)
     {
       square[i] = i * i;
     }
   }


   public static int getSquare(int i)
   {
     if (i < 0 i > LIMIT)
     {
       System.out.println("Error:the i should between 0 to 10");
       return -1;
     }
     return square[i];
   }

   public static void main(String[] args)
   {
     new SmallSquares();
     System.out.println("3 squared is " + getSquare(3));
   }
}


Tags:静态 实例 初始化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接