2025-05-23

1. 接口中所聲明的方法都是抽象方法。接口中的方法都是public 的。
2. 接口中也可以定義成員變量。接口中的成員變量都是public、final、static 的。
3. 一個類不能既是final,又是abstract 的。因為abstract  的主要目的是定義一種約定,
   讓子類去實現這種約定,而final 表示該類不能被繼承,這樣abstract 希望該類可以
   被繼承而final  明確說明該類不能被繼承,兩者矛盾。因此一個類不能既是final  的,
   又是abstract 的。
4. Design  Pattern (設計模式)。單例模式(Singleton):表示一個類隻會生成唯一的一
   個對象。
5. 包(package)。用於將完成不同功能的類分門別類,放在不同的目錄(包)下。包
    的命名規則:將公司域名反轉作為包名。www.shengsiyuan.com,com.shengsiyuan (包
   名),對於包名:每個字母都需要小寫。如果定義類的時候沒有使用package,那麼
   Java 就認為我們所定義的類位於默認包裡面(default package)。
6. 編譯帶有package 聲明的Java 源文件有兩種方式:
a) 直接編譯,然後根據類中所定義的包名,逐一手工建立目錄結構,最後將生成的class
   文件放到該目錄結構中(很少使用,比較麻煩)。
b) 使用編譯參數–d,方式為javac –d .           源文件.java,這樣在編譯後,編譯器會自動幫
   助我們建立好包所對應的目錄結構。
7. 有兩個包名,分別是aa.bb.cc 與aa.bb.cc.dd,那麼我們稱後者為前者的子包。
8. 導入(import),將使用package 分離的各個類導入回來,讓編譯器能夠找到所需要
    的類。
9. import 的語法:import     com.shengsiyuan.PackageTest;
10. import com.shengsiyuan.*,表示導入com.shengsiyuan 包下面的所有類。
11. import aa.bb.*並不會導入aa.bb.cc 包下面的類。這時需要這樣寫:
   import aa.bb.*;
   import aa.bb.cc.*;
12. 關於package、import、class 的順序問題:
a) 首先需要定義包(package),可選
b) 接下來使用import 進行導入,可選
c) 然後才是class 或interface 的定義。
13. 如果兩個類在同一個包下面,那麼則不需要導入,直接使用即可。
14. 訪問修飾符 (access modifier)。
1)  public   (公共的):被public 所修飾的屬性和方法可以被所有類訪問。
2)  protected (受保護的):被protected 所修飾的屬性和方法可以在類內部、相同包
       以及該類的子類所訪問。
3)  private   (私有的):被private 所修飾的屬性和方法隻能在該類內部使用
4 )  默認的(不加任何訪問修飾符):在類內部以及相同包下面的類所使用。
15. instanceof:判斷某個對象是否是某個類的實例。語法形式:引用名 instanceof                         類
   名(接口名),返回一個boolean 值。
 16. People people = new Man();
17. System.out.println(people instanceof People); //結果為true,因為Man 是People 的子
   類,根據繼承,子類就是父類,因此Man 也可以看作是People 的實例。
18. 相等性的比較 (==)1)  對於原生數據類型來說,比較的是左右兩邊的值是否相等。
2)  對於引用類型來說,比較左右兩邊的引用是否指向同一個對象,或者說左右兩
       邊的引用地址是否相同。
19. java.lang.Object 類。java.lang 包在使用的時候無需顯式導入,編譯時由編譯器自動
   幫助我們導入。
20. API (Application Programming Interface ),應用編程接口。
21.  當打印引用時,實際上會打印出引用所指對象的toString()方法的返回值,因為每個
   類都直接或間接地繼承自Object,而Object 類中定義瞭toString(),因此每個類都有
   toString()這個方法。
22.  關於進制的表示:16 進制,逢16 進一,16 進制的數字包括:0~9,A,B,C,D,E,F,
23.  equals()方法,該方法定義在Object 類當中,因此Java  中的每個類都具有該方法,
   對於Object 類的equals()方法來說,它是判斷調用equals()方法的引用與傳進來的引
   用是否一致,即這兩個引用是否指向的是同一個對象。對於Object 類的equals()方
   法來說,它等價於==。
24. 對於String  類的equals()方法來說,它是判斷當前字符串與傳進來的字符串的內容
   是否一致。
25. 對於String 對象的相等性判斷來說,請使用equals()方法,而不要使用==。
26. String 是常量,其對象一旦創建完畢就無法改變。當使用+拼接字符串時,會生成新
    的String 對象,而不是向原有的String 對象追加內容。
27. String Pool (字符串池)
28. String s = “aaa”; (采用字面值方式賦值)
1) 查找String Pool  中是否存在“aaa”這個對象,如果不存在,則在String Pool  中創建
   一個“aaa”對象,然後將String            Pool  中的這個“aaa”對象的地址返回來,賦給引
   用變量s,這樣s 會指向String Pool  中的這個“aaa”字符串對象
2) 如果存在,則不創建任何對象,直接將String Pool 中的這個“aaa”對象地址返回來,
   賦給s 引用。
29. String s = new String(“aaa”);
1) 首先在String Pool  中查找有沒有“aaa”這個字符串對象,如果有,則不在String Pool
    中再去創建“aaa”這個對象瞭,直接在堆中(heap)中創建一個“aaa”字符串對
   象,然後將堆中的這個“aaa”對象的地址返回來,賦給s 引用,導致s 指向瞭堆中
   創建的這個“aaa”字符串對象。
2) 如果沒有,則首先在String Pool  中創建一個“aaa  “對象,然後再在堆中(heap)創
   建一個”aaa  “對象,然後將堆中的這個”aaa  “對象的地址返回來,賦給s                             引用,
   導致s 指向瞭堆中所創建的這個”aaa  “對象。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *