java基礎知識點–vm
1.基本類型,以及int 與 Integer的區別。
基本類型 | 對應的包裝類 | 字節 |
---|---|---|
boolean | Boolean | - |
byte | Byte | 1 |
char | Character | 2 |
short | Short | 2 |
int | Integer | 4 |
float | Float | 4 |
long | Long | 8 |
double | Double | 8 |
基本數據類型:沒有屬性和方法,所以無法對象化交互,通過包裝類就可以擁有屬性與方法,然後可以進行對象化交互。
2.線程的創建
- 創建一個Thread類,或者一個Thread子類的對象,重寫run方法
Thread是位於java.lang包的。 - 創建一個實現Runnable接口的類的對象
- 聲明實現Runnable接口的類
- 在實現類內實現run方法
- 創建實現類的對象
- 通過實現類的對象創建線程類的對象
- 調用start()方法啓動線程。
- 使用Callable和Future創建線程
callable可以拿到返回值,call()方法 返回的是對象。 - 使用線程池例如用Executor框架
3.接口與抽象類的區別
抽象類是用來捕捉子類的通用特性的 。abstract定義抽象類(包含抽象方法的類是抽象類,抽象類中可以沒有抽象方法),抽象類不能直接實例化,只能被繼承,可以通過向上轉型完成對象實例。
接口是抽象方法的集合。如果一個類實現了某個接口,那麼它就繼承了這個接口的抽象方法。這就像契約模式,如果實現了這個接口,那麼就必須確保使用這些方法。接口只是一種形式,接口自身不能做任何事情。
- 默認方法實現:
- 實現
- 構造函數
- main方法
- 實現數量:類可以實現很多個接口;但是隻能繼承一個抽象類。
- 訪問修飾符
參考:http://www.importnew.com/12399.html
4.普通類和抽象類的區別
- 普通類不能包含抽象方法,抽象類可以包含抽象方法
- 抽象類不能直接實例化,普通類可以直接實例化
5.OSI的七層模型
- 物理層
利用傳輸介質爲數據鏈路層提供物理連接,實現比特流的透明傳輸 - 數據鏈路層
負責建立和管理節點間的鏈路 - 網絡層
通過路由選擇算法,爲報文或者分組通過通信子網選擇最適當的路徑 - 傳輸層
向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸 - 會話層
向兩個實體的表示層提供建立和使用連接的方法 - 表示層
處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密等 - 應用層
直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作
6.設計模式
- 單例模式:
- 目的:使得類的一個對象成爲該類系統中的唯一實例
- 定義:一個類有且只有一個實例,並且自行實例化向整個系統提供
- 要點:某個類只能有一個實例 必須自行創建實例 必須自行向整個系統提供這個實例
- 實現:只提供私有的構造方法 含有一個該類的靜態私有對象 提供一個靜態的公有方法用於創建、獲取靜態私有對象
- 代碼實現方案:
– 餓漢式:對象創建過程中實例化
– 懶漢式:靜態公有方法中實例化
代碼:
1)某公司研發星球維護系統,請使用餓漢式單例模式的實現思想,設計編寫地球類。
public class Earth {
//定義私有構造方法,並在構造方法中打印輸出“地球誕生”
private Earth(){
System.out.println("地球誕生");
}
//定義私有靜態類對象並完成實例化
private static Earth er = new Earth();
//定義公有靜態方法返回類內的私有靜態對象
public static Earth getEr(){
return er;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("第一個地球創建中。。。。");
Earth er1 = Earth.getEr();
System.out.println("第二個地球創建中。。。。");
Earth er2 = Earth.getEr();
System.out.println("第三個地球創建中。。。。");
Earth er3 = Earth.getEr();
System.out.println("問:三個地球是同一個麼?");
System.out.println(er1);
System.out.println(er2);
System.out.println(er3);
}
}
顯示效果:
2)請使用懶漢式單例模式的實現思想,設計編寫皇帝類。
public class Emperor {
//定義私有構造方法
private Emperor(){
}
//定義私有靜態類對象
private static Emperor em = null;
//定義公有靜態方法返回類內的私有靜態對象
public static Emperor getEm(){
if(em == null){
em = new Emperor();
}
return em;
}
}
public class Test2 {
public static void main(String[] args) {
System.out.println("創建1號皇帝對象");
Emperor em1 = Emperor.getEm();
System.out.println("創建2號皇帝對象");
Emperor em2 = Emperor.getEm();
System.out.println("創建3號皇帝對象");
Emperor em3 = Emperor.getEm();
System.out.println("三個皇帝對象依次是:");
System.out.println(em1);
System.out.println(em2);
System.out.println(em3);
}
}