一. 數組
. 正確的定義: int num[]; num= new int[5] //只有用new關鍵字真正建立數組時才可以給定它的大小
錯誤的定義: int num[5];
. 常見的數組錯誤為 : ArrayIndexOutOfBoundsException (數組越界錯誤)
. 數組的維度用 .length; 字串長度用 .length();
. 正確的初始化: int[] num={1,2,3}; 又或者: int num[]= new int[]{1,2,3}
錯誤的初始化: int[] num=new int[3]{1,2,3};
. 不能改變Java數組的大小.
二. 類
. Java只允許單繼承,所以增加了介面特性.
. 所有Java類都是Object類的後代,如果一個類沒有extend關鍵字,這個類將是基類Ojbect派生的.
. 一個檔案只能有一個外部類可以聲明為public, 如果你在一個檔案中定義多於一個public外部類,將會發生編譯錯誤
. Java嚴格區分大小寫.
. 一個外部類只允許聲明為public, abstact , final.
. System.out.print 是static方法, 不需要new建立.
. Static方法只能訪問Static變數
. 一個方法變數將"屏蔽"類層級的變數
. Private : 建立它的類內部可見
Public : 所有類都可見
Protected : 在類自身, 子類, 同一個包內部可見
. Static : 可以應用於內部類,方法, 變數.
標誌一個變數為static, 表示其只能有一個副本存在.
一個static方法,不能在一個子類中重寫為非static方法. (此規則對方法的重載不起作用)
一個非static方法,不能在一個子類中重寫為static方法. (此規則對方法的重載不起作用)
. native : 僅修飾方法, 指明代碼體不是用java而是用c或以c++所寫
以一個分號結尾,與不是一個代碼塊, 如: pubic native fastCal();
. abstract: 可以修飾方法和類
當修飾方法,表明方法只能在子類執行時運行,沒有方法體.
如果一個類有 atstract 方法,則它需要聲明為 abstract類.
任何從absract類繼承來的類,都要實現基類的abstract方法, 或者聲明自身為abstract類.
. final : 可修飾類,方法, 變數.
final類不能被繼承.
任何final類中的方法自動成為final方法.
. Synchronize : 同步的
. transient : 瞬時的
. volatile : 不穩定的
三. 構造方法
. 構造方法是一種在類執行個體化時自動啟動並執行特殊類型的方法, 通常被用來初始化類中的值.
. 構造器有和類同樣的名字並且沒有傳回值(包括void).
. 一旦你為一個類建立了任何的構方法,你需要建立一個無參數的構造方法.
. 構造方法不能是 native, abstract, static, synchronize, final
. 構造方法不能被繼承.
. 構造方法中,不能同時用 super() 和 this()
四. 重載與重寫
. 重載: 如果一個類中的兩個或者多個方法有同樣的名字.
(通過參數的順序和類型來區分兩個重載的方法,傳回型別對區重載沒有協助.)
. 重寫: 在子類中的方法跟基類中被取代的原始方法有完全相同的方法名,包括傳回值, 完全取代其功能.
(static方法不能被重寫)
五. 流程式控制制和差錯處理
. if 語句必須帶一個 boolean 類型的值, 不能用非零的數值來表示 true;
. switch 語句的參數必須是 byte, char, short, int
六. 迴圈
. 死迴圈: for(;;) system.out.print("forever"); 或者 while(true){system.out.print("true")};
. break/continue 不能跳到另一個方法去.
七. Try/Catch/Finally
. 在子類中一個重寫的方法可能只拋出父類中聲明過的異常,或者異常的子類. (不適用於重載)
. 通常來說, 所有的I/O操作都需要外在的使用 try/catch來異常處理.
. 考試可能給你一個包括 return 語句來誤導你認為代碼不執行 finally語句就返回, 實際上 finally子句總是會執行的.
. 如果執行了 System.out.exit(0), 則不會執行 finally地代碼.
八. 斷言
.
九. 記憶體回收
. 只能建議記憶體回收行程運行,但無法決定它在代碼的哪一部分執行.
. 只有對象的執行個體才能成為記憶體回收對象, 未經處理資料類型不會.
十. 內部類
. 僅僅在相應的外部類上的上下文中可見.
十一. Collection類/介面
. Set : 一個不可包含重複元素的集合類介面.
. List : 有序的, 可以有重複元素的集合類介面.
. Map : 介面, 實現它的類不能重複的key.
. Vector : 可以將不同類的對象添加到一個Vector 裡面.
. HashTables : 優越的地方在於快速的尋找.
. BitSet : 儲存的是一個序列位元.
十二. 介面
. 介面只允許使用 public final static 修飾
. 介面沒有建構函式.
.實現介面就要實現介面裡的所有方法.
-------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------
. 類層級的變數總是會被賦予一個預設值, 而一個成員變數,將不會被賦予一個預設值.
. 對象引用的預設值是 null.
. instanceOf , 測試一個類的類型然後返回一個布爾值.
. 將一個對象引用賦值給另一個對象的一般規則是: 你可以對繼承樹向上賦值,但不能向下複製.
. 物件導向編程的三個特點: 封裝, 繼承, 多態.
. == 比較的是兩個對象的地址,而不是值.