国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

讀書筆記-《Java核心技術卷I-基礎知識》

2019-11-14 23:01:42
字體:
來源:轉載
供稿:網友
讀書筆記-《java核心技術卷I-基礎知識》

1.定時器Timer類

構造定時器時,需要設置一個時間間隔,并告知定時器,當到達時間間隔時需要做什么操作。定時器需要知道調用哪一個方法,并要求傳遞的對象所屬的類實現了java.awt.event包的ActionListener接口

例:

Class TimePRinter implements ActionListener{    public void actionPerformed(ActionEvent event )    {        Date now = new Date();        System.out.println(now);    }}ActionListener listener = new TimePrinter();Timer t=new Timer(1000,listener);t.start();        

2.局部類final變量做計數器

使用一個長度是1的數組做計數

final int[] count =new int[1];for(int i=0;i<dates.length;i++)    dates[i]=new Date()    {        public int compareTo(Date other)       {            counter[0]++;            return super.compareTo(other);        }    };    

3.拋出原始異常

在catch子句中可以拋出一個異常,這樣做的目的是改變異常的類型。如需拋出高級異常,而不丟失原始異常的細節,可使用:

try{    access the database}catch(SqlException e){    Throwable se =new ServletException(“database error”);    se.initCause(e);    throw se;}

4.finally語句中異常的處理

finally中的語句可能出現異常時,建議獨立使用try/catch 和try/finally語句塊,這樣可以提高代碼的清晰度。例如:

InputStream in= &hellip;try{    try{        code that might throw exceptions    }finally{        in.close();    }}catch(IOException e){    Show error dialog}

內層的try語句塊只有一個職責,就是確保關閉輸入流。外層的try語句塊也只有一個職責,就是確保報告出現的錯誤。這種設計方式不僅清楚,而且還具有一個功能,就是將會報告finally中出現的錯誤。

5.斷言

斷言機制允許在測試期間向代碼中插入一些檢查語句。當代嗎發布是,這些插入的檢測語句將會被自動的移走

方式一:assert 條件 ;

方式二:assert 條件 : 表達式 ;

表達式的將被傳入AssertionError的構造器,并轉換成一個消息字符串。

6.泛型中變量的命名

在構造泛型時,類型變量使用大些形式,且比較短。在Java庫中,使用變量E表示集合的元素類型,K和V分別表示表的關鍵字與值得類型。T(需要時還可以使用臨近的字母U和S)表示“任意類型”

Java泛型在運行時存在一個類型擦除的過程,中間過程會將泛型擦除為Object類,因此,不能使用基本類型實例化類型參數。因此,沒有Pair<double>,只有Pair<Double>

7.Iterator使用

Iterator接口的remove方法見會刪除上次調用next方法時返回的元素。在大多數情況下,決定刪除某個元素之前應該先看一下這個元素是很具有實際意義的。然而,如果想要刪除指定位置上的元素,仍然需要約過這個元素。

例:刪除字符串集合中第一個元素:

Iterator<String> it = c.iteraotr();it.next();it.remove();

8.Vector與ArrayList

對于一個經驗豐富的Java程序員來說,在需要動態數組時,可能會使用Vector類。Vector類的所有方法都是同步的。可以由兩個線程安全地訪問一個Vector對象,但是,如果由一個線程訪問Vector,代碼要在同步操作上耗費大量的時間。而ArrayList方法不是同步的,因此,建議在不需要同步時使用ArrayList,而不是Vector

9.線程中斷異常處理

不要將InterruptedException異常抑制在很低的層次上,比如

void mySubTask(){    try{ sleep(delay);}    catch(InterruptedException e){}}

這樣會導致調用者無法檢測或捕獲這一異常。應使用以下兩種方式

1) 在catch字句中調用Thread.currentThread().interrupt()來設置中斷

Void mySubTask(){    try{         sleep(delay);     }catch(InterruptedException e){        Thread.currentThread().interrupt();     }}

2) 更好的選擇是,用throws InterrupterException標記你的方法

void mySubTask() throws InterrupterException{    sleep(delay);}

10.synchronized關鍵字

public synchronized voi method() {     method body}

等價于

public void method(){    this.intrinsicLock.lock();    try{        method body    }finally{        this.intrinsicLock.unlock();    }}

11.使用Object鎖

public class Bank{    public void transfer(int from ,int to , int mount){        synchronized(lock){            accounts[from]-=amount;            accounts[to]+=amount;        }        System.out.println(…);    }    private double[] account;    private Object lock = new Object();}

12.Java類庫中的集合

ArrayList 一種可以動態增長和縮減的索引序列

LinkedList 一種可以在任何位置進行高效的差如何刪除操作的有序序列

ArrayDeque 一種用循環數組實現的雙端隊列

HashSet 一種沒有重復元素的無序集合

TreeSet 一種有序集

EnumSet 一種包含枚舉類型值的集

LinkedHashSet 一種可以記住元素插入次序的集

PriorityQueue 一種允許高效刪除最小元素的集

HashMap 一種存儲鍵值關聯的數據結構

TreeMap 一種鍵值有序排列的映射表

EnumMap 一種鍵值屬于枚舉類型的映射表

LinkedHashMap 一種可以記住鍵值項添加次序的映射表

WeakHashMap 一種其值無用后可以被垃圾回收器回收的映射表

IdentityHashMap 一種用==,而不是用equals比較鍵值的映射表


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浑源县| 白银市| 金湖县| 五大连池市| 彭山县| 广灵县| 乐至县| 阿克| 鄂伦春自治旗| 吉木乃县| 泌阳县| 庆城县| 柞水县| 英山县| 巫山县| 蒙阴县| 滦平县| 黎平县| 如东县| 玉溪市| 响水县| 中江县| 临夏县| 徐水县| 盐津县| 偏关县| 华坪县| 贵德县| 阿荣旗| 五常市| 商丘市| 南华县| 察雅县| 德安县| 桦甸市| 绥阳县| 通道| 巴彦淖尔市| 奎屯市| 柏乡县| 长子县|