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 “對象。