Java 使用理解
1,extends和implements區別
extends:繼承,在類的宣告中,通過關鍵字extends來建立一個類的子類,可以使用或重寫父類(前提是那個類不要宣告為final或者那個類定義為abstract的就能繼承)
implements:宣告使用,一個類通過關鍵字implements宣告自己使用一個或者多個介面,實現一個介面就是要實現該介面的所有的方法(抽象類除外)
2,單引號和雙引號的區別:
單引號是char型別,雙引號是String型別
char表示字元,定義時使用用單引號表示,只能儲存一個字元。
String表示字串,定義時使用雙引號表示,可以儲存0個或多個字元,其實string型別就是char型別的陣列表現形式。
3,equals和==的區別:
== 比較的是變數(棧)記憶體中存放的物件的(堆)記憶體地址,用來判斷兩個物件的地址是否相同,即是否是指相同一個物件。
equals用來比較的是兩個物件的內容是否相等,由於所有的類都是繼承自java.lang.Object類的,所以適用於所有物件,如果沒有對該方法進行覆蓋的話,呼叫的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。
4,註解(Annotation)
又稱之為java的標註,是JDK5.0 引入的一種註釋機制。Java 語言中的類、方法、變數、引數和包等都可以被標註。Java 標註可以通過反射獲取標註內容。在編譯器生成類檔案時,標註可以被嵌入到位元組碼中。Java 虛擬機器可以保留標註內容,在執行時可以獲取到標註內容 。 當然它也支援自定義 Java 標註。
內建的註解(Java 定義了一套註解,共有 7 個,3 個在 java.lang 中,剩下 4 個在 java.lang.annotation 中。)
A,作用在程式碼的註解是
- @Override - 檢查該方法是否是重寫方法。如果發現其父類,或者是引用的介面中並沒有該方法時,會報編譯錯誤。
- @Deprecated - 標記過時方法。如果使用該方法,會報編譯警告。
- @SuppressWarnings - 指示編譯器去忽略註解中宣告的警告。
作用在其他註解的註解(或者說 元註解)是:
- @Retention - 標識這個註解怎麼儲存,是隻在程式碼中,還是編入class檔案中,或者是在執行時可以通過反射訪問。
- @Documented - 標記這些註解是否包含在使用者文件中。
- @Target - 標記這個註解應該是哪種 Java 成員。
- @Inherited - 標記這個註解是繼承於哪個註解類(預設 註解並沒有繼承於任何子類)
從 Java 7 開始,額外添加了 3 個註解:
- @SafeVarargs - Java 7 開始支援,忽略任何使用引數為泛型變數的方法或建構函式呼叫產生的警告。
- @FunctionalInterface - Java 8 開始支援,標識一個匿名函式或函式式介面。
- @Repeatable - Java 8 開始支援,標識某註解可以在同一個宣告上使用多次。
B,Annotation 組成部分
01) Annotation 就是個介面。
"每 1 個 Annotation" 都與 "1 個 RetentionPolicy" 關聯,並且與 "1~n 個 ElementType" 關聯。可以通俗的理解為:每 1 個 Annotation 物件,都會有唯一的 RetentionPolicy 屬性;至於 ElementType 屬性,則有 1~n 個。
02) ElementType 是 Enum 列舉型別,它用來指定 Annotation 的型別。
"每 1 個 Annotation" 都與 "1~n 個 ElementType" 關聯。當 Annotation 與某個 ElementType 關聯時,就意味著:Annotation有了某種用途。例如,若一個 Annotation 物件是 METHOD 型別,則該 Annotation 只能用來修飾方法。
03) RetentionPolicy 是 Enum 列舉型別,它用來指定 Annotation 的策略。通俗點說,就是不同 RetentionPolicy 型別的 Annotation 的作用域不同。
C,java 自帶的 Annotation
01)通用定義
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation1 {
}