重新探索自我

              客觀條件受制于人,并不足懼。重要的是,我們擁有選擇的自由,可以對現(xiàn)實(shí)環(huán)境積極回應(yīng),
              為生命負(fù)責(zé),為自己創(chuàng)造有利的機(jī)會(huì),做一個(gè)“真正”操之在我的人!

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            3 隨筆 :: 10 文章 :: 5 評論 :: 0 Trackbacks

          ?

          一、 General Techniques

          1、? 引數(shù)以 by value 方式而非 by reference 方式傳遞

          2、? 對于不變的 data object reference 使用 final ,final 僅僅令 object reference 自身成為不變量,但并不限制它所指向?qū)ο蟮母淖?/span>

          3、? 缺省情況下,所有 non-static 都可以被覆寫,不然 , 則用 final 防止覆寫

          4、? vector 容器包含的是對象,與 arrays 要區(qū)別,但我認(rèn)為 Vector 的功能實(shí)際上有些像跟 Array List 差不多,只是 vector 現(xiàn)在不經(jīng)常使用

          5、? 多態(tài)優(yōu)于 instanceof ,只有在不得已的情況下使用

          “如果你根據(jù)對象的型別來觸發(fā)行為,那就改給自己一個(gè)耳光”

          例如,當(dāng)你必須從一個(gè) base type 做向下轉(zhuǎn)型為 derived type 的時(shí)候,必須使用它

          ….

          Vector shapeVector = new Vector(10);

          shapeVector.add(new Triangle());

          shapeVector.add(new Triangle());

          shapeVector.add(new Circle());

          ??? //...

          ??? //Assume many Triangles and Circles are added and removed

          ??? //...

          ??? int size = shapeVector.size();

          ??? for (int i=0; i<size; i++)

          ??? {

          ????? Object o = shapeVector.get(i);

          ????? if (o instanceof Triangle)

          ????? {

          ??????? if (((Triangle)o).isRightTriangle())

          ??????? {

          ????????? //...

          ??????? }

          ????? }

          ????? else if (o instanceof Circle)

          ????? {

          ??????? double rad = ((Circle)o).radius();

          ??????? //...

          ????? }

          }

          ???????? 6 、一旦不需要對象的引用,就將它設(shè)為 null

          ?????? 盡管有 GC, 你還是要關(guān)注的你的代碼如何運(yùn)用內(nèi)存;

          ????????

          ?

          二、? 對象與相等性

          7 、區(qū)分 reference type primitive type ,理解他們的差異,你會(huì)在運(yùn)用他們時(shí)候做出明智的

          選擇;

          ???????? Boolean(boolean)

          ???????? Character(char)

          Byte(byte)

          Integer(int)

          Float(float)

          Long(long)

          Short(short)

          Double(double)

          基本型別相等,只要是值相等就可以拉,不管是不是同一類型;而引用類型必須則按照引用的比較方式來比較,譬如 equals();

          ?

          8 java.lang.object 提供的 equals() 方法很多時(shí)候不是你想要的,你需要自己寫一些比較的方法

          public boolean equals(Object obj)

          ? {

          ?

          ??? if (this == obj)

          ????? return true;

          ?

          ??? if (obj != null && getClass() == obj.getClass())

          ??? {

          ????? Golfball gb = (Golfball)obj;? //Classes are equal, downcast.

          ????? if (brand.equals(gb.brand()) &&? //Compare attributes.

          ????????? make.equals(gb.make()) &&

          ????????? compression == gb.compression())

          ????? {

          ??????? return true;

          ????? }

          ??? }

          ??? return false;

          ? }

          ?

          三、? java 異常

          1、?? try,cacth,finally

          ?

          不要將 catch 的異常覆蓋掉,在這樣的情況下,我們要專門把異常保存下來,如用一個(gè) vector 保存;

          不要忽略任何一個(gè)異常,因?yàn)楫惓R坏┏霈F(xiàn),拋出異常的那個(gè)線程將會(huì)終止;

          將一個(gè)異常加入到 throw 子句,會(huì)影響到調(diào)用它的所有函數(shù)

          使用 finally 防止資源泄露,譬如在連接數(shù)據(jù)庫的時(shí)候在 finally 中關(guān)閉連接;

          不要從 try 字段中返回;

          不要用 try catch 用于流程控制 ;

          不要每逢出錯(cuò)的使用 try catch;

          不要在構(gòu)造函數(shù)中拋出異常;

          拋出異常前,請將對象置為有效狀態(tài);

          四、? 性能

          1、?? 先把焦點(diǎn)放在設(shè)計(jì),數(shù)據(jù)機(jī)構(gòu)和算法方面

          2、?? 如果進(jìn)行字符串的拼接,用 String Buffer String 快許多倍

          3、?? 在面向?qū)ο笾校瑢ο蟮膭?chuàng)建是昂貴的,因此需要將對象的創(chuàng)建成本降到最低,減少一些沒有必要的對象,在非必要的時(shí)候,別產(chǎn)生你的對象

          4、?? 將同步減少到最低,增加 stack 的使用

          5、?? 使用基本型別代碼會(huì)更快

          6、?? 在使用 vector 時(shí)候,用 get() 來獲取對象,而不是 Interator

          7、?? 優(yōu)先使用 array, 再考慮 ArrayList Vector ,如果不需要 vector 的同步特性,考慮使用 ArrayList

          8、?? 盡可能的重復(fù)使用對象,這比重新創(chuàng)建對象更有效

          9、?? 使用緩式評估,延遲計(jì)算,不必要的計(jì)算永遠(yuǎn)都不要計(jì)算

          10、 手動(dòng)優(yōu)化你的代碼,特別是執(zhí)行的順序

          posted on 2006-11-23 18:50 蔣利文 閱讀(251) 評論(0)  編輯  收藏 所屬分類: J2EE開發(fā)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 天全县| 夹江县| 抚松县| 吉水县| 静乐县| 水城县| 方正县| 大悟县| 乌什县| 朝阳县| 红安县| 定结县| 麦盖提县| 乐山市| 琼海市| 湖北省| 蓬溪县| 昭通市| 罗江县| 泉州市| 来安县| 库尔勒市| 磴口县| 长武县| 比如县| 临湘市| 海伦市| 资中县| 沙河市| 乐至县| 开化县| 神池县| 宾阳县| 行唐县| 泗洪县| 岳池县| 米林县| 朝阳区| 舟曲县| 行唐县| 锦州市|