面向对象(下)知识点
指針:指向某個內存地址的變量。它有兩個屬性:地址值和指針類型。
空指針:不指向任何內存地址的指針。
指針類型可告訴編譯器應該怎樣進行接下來的數據訪問。int類型和float類型就不是一樣的。舉個例,如:Cat cat = null;就告訴了cat變量是cat類型,則編譯器會讓cat變量去訪問Cat類型數據;也即相當于在聲明變量時完成了Cat類型的初始化,所以即使是Cat cat = null;這種情況,cat變量也能訪問到到Cat類的靜態成員,而不會報空指針,如果去訪問Cat類的普通成員,則會報空指針,因為普通成員必須要在new之后才存在于堆內存中的。所以,我們可以說null是一個只有類成員的對象(萬物皆對象)。
還有一個解釋:在Java里,對象調用類成員時,實際上是委托類本身來調用的,所以null對象能調用類成員而不報空指針。
基本數據類型用”==”判斷值是否相等
兩個引用變量用”==”判斷引用變量存的地址值是否相等,”==”不能用于比較類型上沒有父子關系的兩個對象,那樣會報錯。
equals()方法是Object類的方法,它規定與自身作比較才相等(即兩個對引用變量指向的是同一個對象才相等)。可通過重寫它自定義相等規則。如引用類型String類的equals()方法就是重寫Object類的equals方法,它的規定是:只要內容相等或是與對象本身作比較就相等。
Java用常量池管理曾經用過的字符串,執行String str = “java”; 時,常量池就會緩存一個”java”,若再執行String s =”java”;則系統會直接讓s指向之前緩存的java,所以str與s共用一個對象,因此str == s 的結果為true;
關于final
關于抽象類
1. 抽象類不能被實例化,主要用于被繼承;抽象方法主要用被重寫。抽象類示例:public abstract class A{}
2. static與abstract不能同時修飾方法,但可同時修飾內部類。
關于接口
1. 與抽象類和普通類的單繼承多實現不同,接口可多繼承多實現。
2. 接口體現的是規范與實現相分離的設計哲學,抽象類體現的是一處模板式設計。
3. 接口不能包含初始化塊、構造器、普通成員變量、普通方法,而抽象類均可包含,且能全是普能方法。
4. 接口的所有成員都用public 修飾。
5. 接口的成員變量必須用public static final 修飾,不指定時默認是它們。
6. 接口中的方法必須是public abstract 修飾, 不指定時默認是它們。
內部類
如何使用:Out.Int in = new Out().new Int(); //in就代表內部類Int的實例對象。
匿名內部類
緩存原理
需要重復訪問的數據,如果在數據庫或硬盤等外部系統中,則訪問獲取時會很慢,如果把這些數據緩存到內存里,每次獲取先看緩存里有沒有,有就直接取,沒有就從外部系統中獲取后放到緩存里,以供下次直接從緩存里取。
注:如果Integer采用Integer.valueOf(99)創建對象,則會緩存該對象,即99會放進緩存里。Integer只緩存 -128~127之間的對象。
總結
以上是生活随笔為你收集整理的面向对象(下)知识点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面向对象(上)知识点
- 下一篇: 深究AngularJS——监听模型$wa