1.
抽象數(shù)據(jù)類型(ADT):是一種能夠對使用者隱藏數(shù)據(jù)表示的數(shù)據(jù)類型。
API:應用程序編程接口
對象:是能夠承載數(shù)據(jù)類型的值的實體
對象三大特性:狀態(tài)、標識、行為
狀態(tài):數(shù)據(jù)類型中的值,標識:內存中的位置,行為:數(shù)據(jù)類型的操作
面向對象編程:運用數(shù)據(jù)抽象的思想編寫代碼(定義和使用數(shù)據(jù)類型,將數(shù)據(jù)類型的值封裝在對象中)的方式
2.

5數(shù)據(jù)類型的設計
5.1?封裝
面向對象編程的特征之一就是使用數(shù)據(jù)類型的實現(xiàn)封裝數(shù)據(jù),以簡化代碼和隔離用例開發(fā)。
封裝實現(xiàn)了模塊化編程,它允許我們:
獨立開發(fā)用例和實現(xiàn)的代碼;
切換至改進的實現(xiàn)而不會影響用例的代碼;
支持尚未編寫的程序(對于后續(xù)用例,API能夠起到指南的作用)
封裝同時也隔離了數(shù)據(jù)類型的操作,這使我們可以:
限制潛在的錯誤;
在實現(xiàn)中添加一致性檢查等調試工具;
確保用例代碼更明晰。
模塊化編程成功的關鍵在于保持模塊之間的獨立性。
5.2?設計API
只為用例提供它們所需要的,僅此而已。
5.5 實現(xiàn)繼承

5.6 字符串表示的習慣
publicString?toString()?{
returngetClass().getName()?+"@"+?Integer.toHexString(hashCode());
}
返回一個含有該對象內存地址的字符串。
5.8 等價性
publicbooleanequals(Object obj) {
return(this==obj);
}
== 比較的是引用
equals()比較的是值
Java約定equals()必須是一種等價性關系。它必須具有:
自反性,x.equals(x)為true;
對稱性,當且僅當y.equals(x)為true時,x.equals(y)返回true;
傳遞性,如果x.equals(y)和y.equals(z)均為true,x.equals(z)也將為true。
另外,它必須接受一個Object為參數(shù)并滿足以下性質:
一致性,當兩個對象均未被修改時,反復調用x.equals(y)總是會返回相同的值;
非空性,x.equals(null)總是返回false。
equals()方法重寫規(guī)則:

java中的數(shù)據(jù)類型,可分為兩類:
1.基本數(shù)據(jù)類型,也稱原始數(shù)據(jù)類型。byte,short,char,int,long,float,double,boolean
他們之間的比較,應用雙等號(==),比較的是他們的值。
2.復合數(shù)據(jù)類型(類)
當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址,所以,除非是同一個new出來的對象,他們的比較后的結果為true,否則比較后結果為false
對于復合數(shù)據(jù)類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是基于他們在內存中的存放位置的地址值的,因為Object的equals方法也是用雙等號(==)進行比較的,所以比較后的結果跟雙等號(==)的結果相同。
5.13 契約式設計
使用斷言保證代碼永遠不會被系統(tǒng)錯誤終止或是進入死循環(huán)。