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