亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Effective Java讀書筆記四:通用程序設計(45-56)

2019-11-14 10:18:07
字體:
來源:轉載
供稿:網友

第45條:將局部變量的作用域最小化

在第一次使用變量時的地方聲明;幾乎每個局部變量的聲明都應該包含一個初始表達式;如果在終止循環之后不需要循環變量的內容,for循環優于while循環。(for循環比while循環還有個優勢:更簡潔,增強可讀性)for(int i =0,n = expensiveComputation(); i < n; i ++){ doSomething(i);}

關于這種做法要關注的一點是,它具有兩個循環變量:i和n,兩者具有相同的作用域。第二個變量n被采用來保存第一個變量的極限值,從而避免在每次迭代中執行冗余計算的開銷。通常,如果循環測試中涉及方法調用,它可以保證每次迭代都會返回同樣的結果,就應該使用這種做法。

第46條:for-each循環優先于傳統的for循環

1.對于多個集合進行嵌套迭代時,for-each循環優勢更明顯. 2.for-each循環不僅可以遍歷集合、數組和枚舉,還可以遍歷任何實現Iterable接口的對象。 3.無法使用for-each循環的情況:   過濾–如果需要在集合上遍歷且移去選定的元素,就要使用顯式的迭代,并調用它的remove方法。   轉換–如果需要在list或數組上遍歷且要替換部分或所有的元素值,則需要list的迭代器或數組的索引去設置這些值。   平行迭代–如果需要并行的遍歷多個集合,則需要顯式的控制迭代器或索引變量,以便所有的迭代器或索引能協同推進。

第47條:了解和使用標準類庫

1、通過使用標準類庫,可以充分利用這些編寫標準類庫專家的知識,以及在你之前的其他人的使用經驗。 2、不必將你的時間浪費在與你工作基本無關的問題上。與大多數程序員一樣,你應該將你的時間放在你的應用研發上,而不是底層細節上。 3、無需你的努力,標準類庫的性能會隨著時間的推遲而改善。因為類庫被許多人使用,也因為類庫以工作標準基準被使用,所以類庫的供應商有著強烈的動機讓類庫運行得更快。 4、可以使你的代碼融于主流中,這種類碼更易讀,更易維護,更易被大多數開發者重用。

第48條:如果需要精確的答案,請避免使用float和double

1、float和double類型尤其不適合用于貨幣計算 2、可以使用bigDecimal、int或者long進行貨幣計算(BigDecimal不方便而且慢,如果數值范圍沒有超過9位十進制數字,就可以使用int;如果不超過18位數字,就可以使用long;如果可能超過18位,就必須使用BigDecimal)

第49條:基本類型優先于裝箱基本類型

基本類型和裝箱基本類型的區別: 1.基本類型只有值,而裝箱基本類型則具有與它們的值不同的同一性。 2.基本類型只有功能完備的至,而每個裝箱基本類型除了它對應基本類型的所有功能值之外,還有個非功能值:null。 3.基本類型通常比裝箱基本類型更節省時間和空間。

裝箱基本類型的合理用處: 1.作為集合中的元素、鍵和值。你不能將基本類型放在集合中,因此必須使用裝箱基本類型。 2.在參數化類型中,必須使用裝箱基本類型作為類型參數,因為java不允許使用基本類型。 3.在進行反射的方法調用時,必須使用裝箱基本類型。

當可以選擇的時候,基本類型要優于裝箱基本類型?;绢愋透雍唵?,也更加快速。如果必須使用裝箱基本類型,要特別小心!自動裝箱減少了使用裝箱基本類型的繁瑣性,但是并沒有減少它的風險。當程序使用==操作符比較兩個裝箱基本類型時,它做了個同一性比較,這幾乎肯定不是你所希望的。當程序進行涉及裝箱和拆箱基本類型的混合計算時,它會進行拆箱,當程序進行拆箱時,會拋出NullPointerException異常。最后,當程序裝箱了基本類型值時,會導致高開銷和不必要的對象創建。

第50條:如果其他類型更適合,則盡量避免使用字符串

字符串不適合代替其他的值類型 當一段數據從文件、網絡、或者鍵盤設備,進入到程序之后,它通常以字符串的形式存在。有一種自然的傾向是讓它繼續保留這種形式,但是,只有當這段數據本質上確實是文本信息時,這種想法才是合理的。字符串不適合替代枚舉類型 枚舉類型比字符串更加適合用來表示枚舉類型的常量字符串不適合代替聚集類型 如果一個實體有多個組件,用一個字符串來表示這個實體通常是不恰當的String compoundKey = className + "#" + i.next();

這種方法有許多缺點。如果用來分割域的字符串也出現在某個域中,結果就會出現混亂。為了訪問單獨的域,必須解析該字符串,這個過程非常慢,也很繁瑣,還容易出錯。你無法提供equals、toString或者compareTo方法,只好被迫幾首String提供的行為。更好的做法是,簡單的編寫一個類來描述這個數據集,通常是一個私有的靜態成員類。 4. 字符串不適合代替能力表 有時候,字符串被用于某種功能進行授權訪問。

如果可以使用更加合適的數據類型,或者可以編寫更加合適的數據類型,就應該避免用字符串表示對象。若使用不當,字符串會比較其他類型更急笨拙、更加不靈活、速度更慢,也更容易出錯。經常被錯誤的用字符來代替的類型包括基本類型、枚舉類型和聚集類型。

第51條:當心字符串連接的性能

為連接n個字符串而重復使用字符串連接符(+),需要n的平方級時間。這是由于字符串不可變,當兩個字符串被連接在一起時,他們的內容都要被拷貝。當我們的程序需要性能的時候,不要使用字符串連接操作符(+)來合并多個字符串 。最好使用StringBuilder的append方法。StringBuilder類是非線程,StringBuffer是線程安全的

第52條:通過接口引用對象

1、優先使用接口而不是類來引用對象。 如果有合適的接口類型存在,那么對參數、返回值、變量和域來說,就應該使用接口類型進行聲明。 只有當利用構造器創建某個對象的時候才真正需要引用這個對象的類

List<Subscriber> subscribers = new ArrayList<Subscriber>();

2、 如果沒有合適的接口存在,完全可以用類而不是接口來引用對象,有三種情況:

具體類沒有相關聯的接口,例如:Random類;對象屬于基于類的框架,例如TimerTask抽象類;類實現了接口,但它提供了接口中不存在的而外方法,例如:LinkedHashMap,如果程序依賴這些額外的方法,這種類就應該只被用來引用它的實例。

第53條:接口優先于反射機制

1、反射機制(reflection)允許一個類使用另一個類,即使當前者被編譯的時候還根本不存在。然而這樣做要付出代價:

喪失了編譯時類型檢查的好處;執行反射訪問所需要的代碼非常笨拙和冗長;性能損失。反射方法的調用比普通方法調用慢了許多。反射功能只是在設計時被用到,普通應用程序運行時不應該以反射方式訪問對象。

2、反射機制的作用: 對于有些程序,它們必須用到在編譯時無法獲取的類,但在編譯時存在適當的接口或者超類,通過它們可以引用這個類。如果是這種情況,就可以以反射的方式創建實例,然后通過它們的接口或者超類,以正常的方式訪問這些實例。如果適當的構造器不需要任何參數,那就不需要使用java.lang.reflect包,采用Class.newInstace方法就可以了。

第54條:謹慎地使用本地方法

使用本地方法的重要缺點:本地語言不是安全的;本地語言是與平臺相關的。

第55條:謹慎地進行優化

不用費力去編寫快速的程序–應該努力編寫更好的程序,速度自然會隨著而來。

第56條:遵守普通接受的命名慣例

可以參考各大公司的開發手冊中的命名規范

《Effective Java中文版 第2版》PDF版下載: http://download.csdn.net/detail/xunzaosiyecao/9745699

作者:jiankunking 出處:http://blog.csdn.net/jiankunking


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
尤物tv国产一区| 精品国产一区二区三区久久久狼| 青青久久av北条麻妃海外网| 一区二区三区久久精品| 日本精品va在线观看| 亚洲日本中文字幕免费在线不卡| 国产精品pans私拍| 日韩av在线影院| 欧美性理论片在线观看片免费| 欧美极品少妇xxxxx| 亚洲国产精品va| 国产精品丝袜一区二区三区| 日韩在线视频导航| 精品视频久久久久久久| 久青草国产97香蕉在线视频| 国产日韩欧美夫妻视频在线观看| 欧美激情综合色综合啪啪五月| 亚洲国产精品久久精品怡红院| 456亚洲影院| 午夜精品一区二区三区在线播放| 欧美小视频在线观看| 青青久久av北条麻妃海外网| 亚洲毛片在线观看| 亚洲成av人片在线观看香蕉| 国产精品自在线| 亚洲精选中文字幕| 欧美一乱一性一交一视频| 亚洲精品短视频| 亚洲91av视频| 中文字幕日韩综合av| 亚洲国产成人精品女人久久久| 一区二区亚洲精品国产| 日韩最新在线视频| 国产91ⅴ在线精品免费观看| 98精品国产自产在线观看| 国产精品日韩欧美大师| 久热精品视频在线观看| 国产欧美亚洲精品| 亚洲精品国产精品乱码不99按摩| 欧美亚洲一区在线| 日韩在线视频网站| 亚洲欧洲在线视频| 欧美精品www在线观看| 久久精品99无色码中文字幕| 久久99青青精品免费观看| 日韩精品黄色网| 欧美激情一级欧美精品| 国产精品麻豆va在线播放| 91超碰中文字幕久久精品| 欧美电影免费观看| 国产精品专区h在线观看| 国产成人精品优优av| 久久激情视频久久| 九九热这里只有精品免费看| 91在线|亚洲| 国产美女高潮久久白浆| 欧美香蕉大胸在线视频观看| 7777免费精品视频| 亚洲欧美国产一区二区三区| 亚洲激情中文字幕| 日韩在线观看免费全集电视剧网站| 日韩av在线天堂网| 亚洲欧洲偷拍精品| 国产丝袜一区视频在线观看| 成人欧美一区二区三区在线| 久久久亚洲国产| 亚洲大胆美女视频| 亚洲国产精品久久久| 在线观看国产精品淫| 在线激情影院一区| 在线播放国产一区中文字幕剧情欧美| 最近2019中文字幕一页二页| 欧美精品做受xxx性少妇| 日韩成人av在线播放| 狠狠久久五月精品中文字幕| 精品久久久国产精品999| 黑人巨大精品欧美一区二区一视频| 欧美中文在线观看| 日韩av在线免播放器| 精品国产乱码久久久久久天美| 日韩在线中文字| 国产精品久久激情| 亚洲欧美综合v| 国产精品丝袜一区二区三区| 热久久免费视频精品| 国模精品一区二区三区色天香| 欧美成人午夜免费视在线看片| 日韩有码视频在线| 青青草国产精品一区二区| 亚洲美腿欧美激情另类| 欧美性猛交xxxxx水多| 17婷婷久久www| 91久久国产精品91久久性色| 国产视频一区在线| 日韩女优在线播放| 日韩欧美在线看| 亚洲精品自拍偷拍| 亚洲激情视频在线播放| 成人有码在线视频| 国产精品成人观看视频国产奇米| 欧美日韩国产123| 欧美大成色www永久网站婷| 大伊人狠狠躁夜夜躁av一区| 国产精品视频资源| 成人免费黄色网| 国产精品成人品| 久久久之久亚州精品露出| 国产精自产拍久久久久久蜜| 亚洲精品丝袜日韩| 久久久久久久久久久亚洲| 国产精品日韩欧美综合| 91精品视频大全| 成人午夜在线视频一区| 在线观看亚洲视频| 色777狠狠综合秋免鲁丝| 97国产精品视频人人做人人爱| 亚洲福利视频网| 97久久国产精品| 青草青草久热精品视频在线网站| 97视频在线观看视频免费视频| 色综合亚洲精品激情狠狠| 亚洲色图校园春色| 伊人伊人伊人久久| 亚洲伊人久久大香线蕉av| 欧美有码在线观看| 精品国产91久久久| 亚洲精品电影在线| 热久久视久久精品18亚洲精品| 中文字幕日韩高清| 亚洲高清色综合| 亚洲韩国欧洲国产日产av| 国语自产精品视频在线看| 国模gogo一区二区大胆私拍| 亚洲电影免费观看高清完整版在线| 欧美黄色片在线观看| 亚洲成人av片| 91精品国产91久久久久福利| 国产欧美在线播放| 中文字幕在线看视频国产欧美在线看完整| 国产精品免费视频xxxx| 精品人伦一区二区三区蜜桃网站| 欧洲成人免费视频| 国产啪精品视频| 91视频免费在线| 国产综合久久久久久| 久久男人av资源网站| 亚洲国产欧美一区二区丝袜黑人| 欧美片一区二区三区| 在线激情影院一区| 欧美成人午夜激情视频| 亚洲国产美女久久久久| 色综合久久精品亚洲国产| 亚洲xxxx在线| 中文字幕亚洲欧美日韩2019| 午夜精品久久久久久久久久久久久| 91久久在线视频| 成人午夜激情网| 国产亚洲精品美女久久久| 国产suv精品一区二区三区88区| 国产精品18久久久久久麻辣| 成人欧美一区二区三区黑人孕妇| 精品美女永久免费视频| 国产精品一区二区av影院萌芽| 国产一区二区三区在线视频|