Java實訓筆記(二)——-抽象類-接口-泛型-集合


1.1方法的可變參數
從JDK1.5之后,定義方法時參數的個數可以變化
語法:最后一個數據類型后增加3個點
注意:
1.可變參數只能處於參數列表的最后;
2.一個方法中最多只能包含一個可變參數;
3.可變參數的本質就是一個數組,因此在調用一個包含可變參數的方法時,既可以傳人多個參數,也可以傳入一個數組。
1.2裝箱與拆箱
基本數據類型與對應的封裝類之間能夠自動進行轉換,其本質是Java的自動裝箱與拆箱過程。
-裝箱是指將基本類型數據值轉換成對應的封裝類對象,即將棧中的數據封裝成對象存放到堆中的過程。
-拆箱是裝箱的反過程,是將封裝的對象轉換成基本型數據值,即將堆中的數據值存放到棧中的過程。
1.3Math 和Date

Math類包含基本數學運算的方法,都是靜態的 ,可以直接調用而無需實例化。
abs(double a) ceil() 向下取整,floor()向上取整,round(),
1.4 Final關鍵字
表示不可改變,修飾變量方法和類
修飾變量,表示常量
修飾方法,不能被子類重寫
修飾類,不能被繼承

1.5單例模式


public class SingletonDemo {

public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if(s1==s2)
{
System.out.println("同一個對象");
}

}
}

class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){

if(instance == null){
instance = new Singleton();
}
return instance;
}
}


1.6抽象類
定義抽象類:
abstract 關鍵字不能用來修飾變量和構造方法,即沒有抽象變量和抽象構造方法的說法 。abstract關修飾的的方法只有被子類重寫才有意義。否則這個方法永遠沒有方法體,因此抽象方法不能被定義為private,即private 和abstract不能同時修飾方法,avstract也不能和static,final 或native 同時修飾同一方法。
抽象類不能被實例化,只能被當成父類來繼承。從語義角度上講,抽象類是從多個具有相同特征的類中抽象出的一個父類。


1.7抽象類和接口的比較:


相似:接口和抽象類都不能被實例化,其類型變量都可以指向其實現類或者子類的變量。
區別:接口體現的是規范,是系統各模塊應該遵循的標准。
抽象類體現的是模板式設計。抽象類可以被當成系統中的中間產品,而不是最終產品 ,還需要進一步完善。
接口中定義的變量都是最終的靜態常量。
接口中定義的方法默認缺省是public
抽象類與類是默認缺省的

接口不包含構造方法
抽象類可以包含構造方法,抽象類的構造方法不是用於創建對象,而是讓其子類調用以便完成初始化操作。
一個類最多只能有一個直接父類,包括抽象類
一個類可以實現多個接口

1.8instanceof關鍵字
同種類型的兩個引用變量調用同一個方法時可能會有不同的行為。
語法:
引用類型變量 instanceof 引用類型

1.9 泛型
從jdk5.0開始,Java引入“參數化類型”的概念,泛型是將數據類型參數化,即在編寫代碼時將數據類型定義成參數,這些類型參數在使用之前再進行指明。
泛型類語法:
[訪問符] class 類名 <類型參數列表>{
//類體......
}

通配符:

聲明和創建泛型實例對象時,都應該為此泛型傳人一個實參,否則編譯器會提出泛型警告。
假設現在定義一個方法,該方法的參數需要使用泛型,但類型參數是不確定的,如果使用Object類型來解決,編譯時則會出現錯誤。
通配符是由?來表示。


有界類型:
-使用extends關鍵字聲明類型參數的上界;
-使用super關鍵字聲明類型參數的下界;

上界:
語法:[訪問符] class 類名<類型參數 extends 父類>{
//類體....

}

下界:
<? super String>

泛型的限制:
java編譯時類型擦除
-泛型的類型參數只能是類類型;
-同一個泛型類可以有多個版本,不同版本的泛型類的實例是不兼容的。
-定義泛型時,類型參數只是占位符,不能直接實例化,例如:new T()是錯誤的。
-不能實例化泛型數組,除非是無上界的類型同配符,例如:
“Generic<String>[] a = new Generic<String>[10] 是錯誤的”,而"Generic<?>[] a=new Generic<?> [10]"是被允許的。
-泛型類不能繼承Throwable及其子類,即泛型類不能是異常類,不能拋出也不能捕獲泛型類的異常對象,例如:“class GenericException<T> extends Exception”"catch(T e)"都是錯誤的。


集合類
1.set接口
set無序,不重復。
常用實現類:HashSet、TreeSet、EnumSet

HashSet元素不重復
TreeSet元素不重復, 可以進行自然排序


2.Queue接口及其實現類
隊列Queue 先進先出

element offer peek poll remove

Deque接口,雙端的隊列
addFirst addLast getFirst getLast offerFirst


LinkedList 兼具List和Deque,線程不安全。


ArrayDeque:

PriorityQueue:


Map接口
Map 與Collection接口並列,主要以key-value鍵值對映射關系:

-HashMap 基於哈希算法,無序映射集合
-TreeMap 根據key自然排序,或定制排序

TreeMap 不允許為空

 ******************************************************************************

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM