1. Java和C++最大的不同在於Java採用的指針模型可以消除重寫記憶體和損壞數據的可能性。 2. Java沒有C++的多重繼承,取而代之的是更簡單的介面概念。 3. 從一開始Java就設計能防範各種攻擊,包括:運行時堆棧溢出、破壞自己的進程空間之外的記憶體、未經授權的讀寫文件。 4. javac程 ...
1. Java和C++最大的不同在於Java採用的指針模型可以消除重寫記憶體和損壞數據的可能性。
2. Java沒有C++的多重繼承,取而代之的是更簡單的介面概念。
3. 從一開始Java就設計能防範各種攻擊,包括:運行時堆棧溢出、破壞自己的進程空間之外的記憶體、未經授權的讀寫文件。
4. javac程式是Java編譯器,將java文件編譯成class文件。java程式啟動Java虛擬機,執行class文件中的位元組碼。
5. Java區分大小寫。
6. 8中基本數據類型,4種整型、2種浮點型、1種布爾型、1種字元型。浮點數值採用二進位表示,而二進位無法準確表示十分之一,就像十進位無法準確表示三分之一一樣。如需準確表示,請用BigDecimal。
遺留問題:char和bool以及unicode各占用多少位元組?
7. 有些處理器使用80位浮點寄存器,這樣在計算時會和64位電腦上結果不一樣。可以將類標記為 strictfp,這將使類強制使用嚴格浮點計算,確保所有計算結果一致。
8. 數值類型之間的強制類型轉換丟失的是高位。例如 (byte)300 = 44。300的二進位位 100101100。後8位為44。
9. 關於字元串的實現,後續單開一篇。
10. Java中的多維數組,其實是數組的數組實現。
11. 傳統結構化程式在解決問題是,首先是設計一系列過程(即演算法)來求解問題,然後再考慮數據存儲的方式。即先確定如何操作數據,再確定如何存儲數據,以便於操作。故 演算法 + 數據結構 = 程式。
而面向對象則反過來,先確定數據的存儲,再確定演算法。
12. Java對象都是在堆中構造的。
13. Java方法的參數總是按值傳遞。當參數是對象時,值為對象的地址。
14. 完整的描述一個方法,需要指出方法名和方法參數,這叫方法的簽名。方法簽名不包括返回值,因為有時候調用一個方法,可能只關心它的內在邏輯,並不關心其返回值。
15. 類的設計原則
- 一定要保證數據私有:絕對不要破壞封裝性,數據表現形式很可能會變化,但數據的使用方式卻不會經常發生變化。
- 一定要對數據初始化:最好不要依賴系統的預設值,而是顯示的初始化所有數據。
- 不要在類中使用過多的基本類型:部分屬性之間有強關聯關係時,應該抽出獨立為一個新對象。例如 省市縣鎮村 等欄位,應獨立為Address對象。
- 不是所有的屬性都需要設置set、get方法,有時只需其中之一。
- 類的職責要單一。
- 類名、方法名和參數名 要能體現他們的職責,避免用單個字母代替。