原创 Java編程思想 通過異常處理錯誤總結

Java的基本理念是 結構不佳的代碼不能運行 概念 異常 這個詞有 我對此感到意外 的意思 問題出現了 你也許不清楚該如何處理 但你的確知道不應該置之不理 你要停下來 看看是不是有別人或在別的地方 能夠處理這個問題 只是在當前的環

原创 Java編程思想 內部類總結

可以將一個類的定義放在另一個類的定義內部 這就是內部類 創建內部類 更典型的情況是 外部類將有一個方法 該方法返回一個指向內部類的引用 如果想從外部類的非靜態方法之外的任意位置創建某個內部類的對象 那麼必須像在main()方法

原创 Java編程思想 持有對象總結

如果一個程序只包含固定數量的且其生命期都是已知的對象 那麼這是一個非常簡單的程序 泛型和類型安全的容器 使用Java SE5之前的容器的一個主要問題就是編譯器允許你向容器中插入不正確的類型 在本例中 Apple和Orange都放置

原创 Java編程思想 接口總結

接口和內部類爲我們提供了一種將接口與實現分離的更加結構化的方法 抽象類和抽象方法 抽象方法 abstract void f(); 包含抽象方法的類叫做抽象類 如果一個類包含一個或多個抽象方法 該類必須被限定爲抽象的(否則 編譯器就

原创 Java編程思想 多態總結

在面向對象的程序設計語言中 多態是繼數據抽象和繼承之後的第三種基本特徵 再論向上轉型 對象既可以作爲它自己本身的類型使用 也可以作爲它的基類型使用 這種把對某個對象的引用視爲對其基類型的引用的做法被稱作向上轉型——因爲在繼承樹的畫

原创 Java編程思想 複用類總結

組合語法 每一個非基本類型的對象都有一個toString()方法 而且當編譯器需要一個String而你卻只有一個對象時 該方法便會被調用 "source = " + source 將調用toString() 把source轉換成爲

原创 Java編程思想 訪問權限控制總結

訪問控制(或隱藏具體實現)與 最初的實現並不恰當 有關 包:庫單元 包內包含有一組類 它們在單一的名字空間之下被組織在了一起 使用包中類 可以使用全名來指定 或者import關鍵字 要想導入包中所有的類 只需要使用 * 一個Jav

原创 Java編程思想 初始化與清理總結

用構造器確保初始化 在創建對象時: new Rock(); 將會爲對象分配存儲空間 並調用相應的構造器 方法重載 方法名相同而形式參數不同 區分重載方法 每個重載的方法都必須有一個獨一無二的參數類型列表 參數順序不同也可以區分兩個

原创 Java併發編程實戰 構建自定義的同步工具總結

狀態依賴性的管理 在單線程程序中調用一個方法時 如果某個基於狀態的前提條件未得到滿足(例如 連接池必須非空) 那麼這個條件將永遠無法成真 因此 在編寫順序程序中的類時 要使得這些類在它們的前提條件未被滿足時就失敗 但在併發程序中

原创 Java併發編程實戰 避免活躍性危險總結

在安全性與活躍性之間通常存在着某種制衡 我們使用加鎖機制來確保線程安全 但如果過度地使用加鎖 則可能導致鎖順序死鎖(Lock-Ordering Deadlock) 同樣 我們使用線程池和信號量來限制對資源的使用 但這些被限制的行爲

原创 Java編程思想 操作符總結

使用Java操作符 加號和一元的正號(+) 減號和一元的負號(-) 乘號(*) 除號(/)以及賦值號(=) 幾乎所有的操作符都只能操作 基本類型 例外的操作符是 = == 和 != 這些操作符能操作所有的對象 String類支持

原创 Java併發編程實戰 性能與可伸縮性總結

對性能的思考 要想通過併發來獲得更好的性能 需要努力做好兩件事情:更有效地利用現有處理資源 以及在出現新的處理資源時使程序儘可能地利用這些新資源 性能與可伸縮性 應用程序的性能可以採用多個指標來衡量 例如服務時間 延遲時間 吞吐率

原创 Java編程思想 一切都是對象總結

用引用操縱對象 Sting s; 這裏所創建的只是引用 並不是對象 創建一個引用的同時便進行初始化 String s = “asdf”; 字符串可以用帶引號的文本初始化 必須由你創建所有對象 String s = new Stri

原创 Java併發編程實戰 Java內存模型總結

什麼是內存模型 爲什麼需要它 如果缺少同步 那麼將會有許多因素使得線程無法立即甚至永遠 看到另一個線程的操作結果 在編譯器中生成的指令順序 可以與源代碼中的順序不同 此外編譯器還會把變量保存在寄存器而不是內存中 處理器可以採用亂序

原创 Java編程思想 控制執行流程總結

true和false Java不允許我們將一個數字作爲布爾值使用 在C和C++裏是允許的(真 是非零 而 假 是零) if-else else if 並非新的關鍵字 而僅僅只是一個else後面緊跟另一個新的if語句 迭代 w