物件導向(下)知識點

來源:互聯網
上載者:User

標籤:

  1. 指標:指向某個記憶體位址的變數。它有兩個屬性:地址值和指標類型。
    null 指標:不指向任何記憶體位址的指標。
    指標類型可告訴編譯器應該怎樣進行接下來的資料訪問。int類型和float類型就不是一樣的。舉個例,如:Cat cat = null;就告訴了cat變數是cat類型,則編譯器會讓cat變數去訪問Cat類型資料;也即相當於在聲明變數時完成了Cat類型的初始化,所以即使是Cat cat = null;這種情況,cat變數也能訪問到到Cat類的靜態成員,而不會報null 指標,如果去訪問Cat類的普通成員,則會報null 指標,因為普通成員必須要在new之後才存在於堆記憶體中的。所以,我們可以說null是一個只有類成員的對象(萬物皆對象)。
    還有一個解釋:在Java裡,對象調用類成員時,實際上是委託類本身來調用的,所以null對象能調用類成員而不報null 指標。

  2. 基礎資料型別 (Elementary Data Type)用”==”判斷值是否相等
    兩個引用變數用”==”判斷引用變數存的地址值是否相等,”==”不能用於比較類型上沒有父子關係的兩個對象,那樣會報錯。
    equals()方法是Object類的方法,它規定與自身作比較才相等(即兩個對引用變數指向的是同一個對象才相等)。可通過重寫它自訂相等規則。如參考型別String類的equals()方法就是重寫Object類的equals方法,它的規定是:只要內容相等或是與對象本身作比較就相等。
    Java用常量池管理曾經用過的字串,執行String str = “java”; 時,常量池就會緩衝一個”java”,若再執行String s =”java”;則系統會直接讓s指向之前緩衝的java,所以str與s共用一個對象,因此str == s 的結果為true;

  3. 關於final

    1. final修飾的成員變數必須顯示賦值,不然該成員變數失去了存在的意義。
    2. final修飾的類變數,要麼在靜態塊中賦值,要麼在聲明時就賦值。
    3. final修飾的執行個體變數,要麼在普通初始化塊和構造器中賦值,要麼在聲時就賦值。
    4. final修飾的類不可被繼承,修飾的方法不可被重寫,但可被重載。
    5. 宏變數:被final修飾且在定義時就賦好初值的變數。編譯時間,會將所有用到宏變數的的地方都直接替換成該變數的值。樣本:
    //1.聲明非宏變數    String  a = "ja";    String  b = "va";    System.out.print(a+b == "java");//結果為false    //2.聲明宏變數    final String a = "ja";    final String b = "va";    System.out.print(a+b == "java");//結果為true    //這裡的a、b是宏變數,所以會直接替換成它的值,所以此時的a+b直接就是"java"。
  1. 關於抽象類別
    1. 抽象類別不能被執行個體化,主要用於被繼承;抽象方法主要用被重寫。抽象類別樣本:public abstract class A{}
    2. static與abstract不能同時修飾方法,但可同時修飾內部類。

  2. 關於介面
    1. 與抽象類別和普通類的單繼承多實現不同,介面可多繼承多實現。
    2. 介面體現的是規範與實現相分離的設計哲學,抽象類別體現的是一處模板式設計。
    3. 介面不能包含初始化塊、構造器、普通成員變數、普通方法,而抽象類別均可包含,且能全是普能方法。
    4. 介面的所有成員都用public 修飾。
    5. 介面的成員變數必須用public static final 修飾,不指定時預設是它們。
    6. 介面中的方法必須是public abstract 修飾, 不指定時預設是它們。

  3. 內部類
    如何使用:Out.Int in = new Out().new Int(); //in就代表內部類Int的執行個體對象。

  4. 匿名內部類

    1. 如果一個介面的實作類別須使用多次,則定義成獨立類,但只使用一次時,則應該定義成匿名內部類。
    2. 匿名內部類裡不能定義構造器,但可以定義初始化塊來完成需要構造器完成的事。
    3. 匿名內部類格式:new 介面(或類){ 重寫 },只需要重寫一次某個類的方法時,可使用匿名類內部類。
    4. 匿名內部類訪問的外部局變數預設是final修飾的。
  5. 緩衝原理
    需要重複訪問的資料,如果在資料庫或硬碟等外部系統中,則訪問擷取時會很慢,如果把這些資料緩衝到記憶體裡,每次擷取先看緩衝裡有沒有,有就直接取,沒有就從外部系統中擷取後放到緩衝裡,以供下次直接從緩衝裡取。
    註:如果Integer採用Integer.valueOf(99)建立對象,則會緩衝該對象,即99會放進緩衝裡。Integer只緩衝 -128~127之間的對象。

物件導向(下)知識點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.