Java基礎,沒事能夠看看,夯實一下

1、封裝java

使用者直接對類內部的屬性進行操做會致使數據的錯誤、混亂或安全性問題。能夠經過聲明爲private ,再提供get/set 方法進行訪問。算法

2、重載編程

在一個類中容許同事存在一個以上同名函數,只要參數個數,參數類型 不一樣便可。設計模式

3、this 關鍵詞安全

是當前類的一個對象的引用。服務器

4、類的繼承(extends)網絡

子類繼承了父類,就繼承了父類中非私有的屬性和方法。子類中可使用父類的屬性和方法,也能夠建立新的數據和方法。函數

java 只支持單繼承,不容許多繼承。工具

-- 一個子類只能有一個父類。性能

-- 一個父類能夠派生出多個子類。

-- 子類不能繼承服務器的構造方法。

5、訪問控制

Java基礎,沒事能夠看看,夯實一下
6、重寫

子類能夠根據須要對從父類繼承來的方法進行改造(方法的重置/重寫),在程序執行時,子類的方法將覆蓋父類的方法。

覆蓋的方法必須和被覆蓋方法具備相同的方法名、參數列表和返回值。

覆蓋方法不能使用比被覆蓋方法更嚴格的訪問權限。

7、super 關鍵字

是在子類中對父類的引用。

子類的構造器必須調用父類的一個構造器。不顯示調用,則默認調用父類無參的構造器。

super 和 this 不能同時在一個構造函數中出現。

super 和 this 只能做爲構造函數的第一行出現。

我剛整理了一套2018最新的0基礎入門和進階教程,無私分享,加Java學習裙 :678-241-563 便可獲取,內附:開發工具和安裝包,以及系統學習路線圖

8、多態

一樣類型的變量,調用一樣的方法,卻產生徹底不一樣的行爲。

父類指向子類的引用(父類 = new 子類)。父類調用方法,調用的將是子類重寫的方法。

例子:

Person p1 = new Man();

p1.walk(); // 調用的是子類重寫的方法。

父類多態的狀況下(父類指向子類的引用(父類 = new 子類)),父類不能調用父類沒有的方法。能夠經過強制類型轉換的方式解決此問題。

例子:

Person p1 = new Man();

Man man = (Man) p1;

父類的對象能夠轉換爲任何子類的類型,但有可能會發生 類型轉換異常。

只能在有父子類關係的狀況下才能強制類型轉換。

9、instanceof 操做符

X instanceof A :檢驗X 是否爲類A 的對象,返回值爲boolean 型。

要求X 所屬的類與類A 必須是父子類關係。不然編譯錯誤。

10、static 關鍵字

static{} 靜態代碼塊在類加載時執行,而且只執行一次。

11、單子(singleton)設計模式

採起必定的方法保證在整個軟件系統中,對某個類智能存在一個對象實例。而且該類只提供了一個取得其對象實例的方法。

構造器私有化。

在該類內部提供一個私有的靜態實例對象。

提供一個get 方法 供外部使用。

例子:

private JavaTest() {}

private static JavaTest javaTest = new JavaTest();

public static JavaTest getJavaTest() {

return javaTest;

}
分享個不錯的學習交流q-u-n 678-241-563視頻資料免費分享

12、final 關鍵字

final 能夠修飾類,屬性和方法。表示最終的。

final 修飾的屬性,是最終的屬性 - 屬性值不能被修改,即常量。

屬性必須在初始化,或在非靜態代碼塊,或在構造器中進行初始化。

final 修飾的方法,是最終的方法 - 該方法不能被修改 - 該方法不能被重寫。

final 修飾的類,是最終的類 - 該類不能被擴展 - 該類不能被繼承。

十3、抽象類(abstract)

用於修飾方法 和 類。

abstract 修飾的方法: 沒有方法體,只有方法聲明。

abstract 修飾的類 : 抽象類,不能被實例化。抽象類是用來被繼承的,抽象類的子類必須重寫父類的抽象方法,並提供方法體。

有抽象方法的類必定是抽象類,但抽象類中能夠沒有抽象方法。

不能用abstract 修飾私有方法,構造方法,靜態方法。

十4、接口(interface)

接口是抽象方法和常量的定義集合。

接口是一種特殊的抽象類,接口中只能包含常量和方法的定義,而沒有變量和方法的實現。

接口中全部的成員變量默認由public static final 修飾。

接口中全部的方法都默認由public abstract 修飾。接口中沒有構造方法。

實現接口的類必須提供接口中全部方法的具體實現。

接口容許多實現。一個類能夠實現多個接口。

接口與實現類之間存在多態性。

接口能夠繼承另外一個接口。

十5、內部類

在類的內部定義的一個類。至關於一個類的內部成員。

在類的外部能夠訪問該類的內部類。

靜態內部類中的方法不能訪問外部類的非靜態對象。

十6、異常

java 中,將程序執行中發生的不正常狀況稱爲「異常」。

java 中的異經常使用於處理非預期的狀況,如文件沒找到,網絡錯誤,非法參數等。

java 程序運行過程當中所發生的異常事件可分爲兩類:

Error : JVM 系統內部錯誤、資源耗盡等嚴重狀況。

Exception : 其餘因編程錯誤或偶然的外在因素致使的通常問題。如空指針訪問,試圖讀取不存在的文件,網絡鏈接中斷。

自定義異常:

public class JavaTest extends RuntimeException {

public JavaTest() {

}

public JavaTest(String msg) {

super(msg);

}

}

十7、集合

java 集合能夠分爲Set 、List 、Map 三種體系。

-- Set : 無序,不可重複的集合。

-- List : 有序,可重複的集合。

-- Map : 具備映射關係的集合。

  1. Collection 接口

Collection 接口是 List ,Set 和 Queue 接口的父接口。該接口裏定義的方法便可用於操做Set 集合,也可用於操做List和Queue 集合。

Collection 中沒法獲取指定元素,但能夠遍歷全部元素。

  1. Set 集合

Set 集合不容許包含相同的元素,Set 判斷兩個對象是否相同不用==運算符,而是根據equals 方法。

(1) HashSet 是Set 接口的典型實現,大多時候使用Set 集合時都使用這個實現類。

HashSet 按照Hash 算法來存儲集合中的元素,所以具備很好的存儲和查找功能。

HashSet 具備如下特色:

-- 不能保證元素的排列順序。

-- HashSet 不是線程安全的。

-- 集合元素可使用 null 。

(2) LinkedHashSet 是HashSet 的子類。

LinkedHashSet 集合根據元素的hashCode 值來肯定元素的存儲位置。但它同時使用鏈表維護元素的次序,這使得元素看起來是以插入順序保存的。

LinkedHashSet 性能插入性能略低於HashSet ,但在迭代訪問Set 裏所有元素時有很好的性能。

LinkedHashSet 不容許集合元素重複。

(3) TreeSet

Ⅰ. TreeSet 是SortedSet 接口的實現類,TreeSet 能夠確保集合元素處於排序狀態。

默認狀況下 TreeSet 要求集合中的元素必須實現Comparable 接口。

Comparable 中只有一個方法 : public int compareTo(Object o)

若返回0 表明兩個元素相等; 若返回整數,則表明當前元素大; 若返回負數,則表明當前元素小。

TreeSet 用 Iterator 遍歷。

Iterator it = set.iterator();

for(;it.hasNext();){

System.out.println(it.next());

}

Ⅱ. TreeSet 支持兩種排序方法:天然排序 和 定製排序。默認狀況下,TreeSet 採用天然排序。

天然排序:

由於只有相同類的兩個實例纔會比較大小,因此向TreeSet 中添加的應該是一個類的對象。

當須要把一個對象放入到TreeSet 中,重寫該對象的equals 方法時,應保證該方法與compareTo(Object obj)方法有一致的結果:若是兩個對象經過equals() 方法比較返回true,則經過compareTo(Object obj) 方法比較應返回 0 。

定製排序:

傳入的對象不用實現Comparable 接口,可是在建立TreeSet 時須要傳入一個Comparable 的實現類。使實體類更簡潔。

TreeSet set = new TreeSet(new Comparable (){ });

  1. List

List 表明一個元素有序,且重複的集合,集合中的每一個元素都有其對應的順序索引。

List 容許使用重複的元素,能夠經過索引來訪問指定位置的集合元素。

List 默認按元素的添加順序設置元素的索引。

List 集合裏添加了一些根據索引來操做幾個元素的方法。

List 額外提供了一個 listlterator() 方法,該方法返回一個Listlterator 對象,ListIterator 接口繼承了Iterator 接口,提供了專門操做List 的方法:

Ⅰ. ArrayList 和 Vector

ArrayList 和 Vector 是List 接口的兩個典型實現。

區別:

  1. 是一個古老的集合,一般建議使用ArrayList 。
  2. ArrayList 是線程不安全的,而Vector 是線程安全的。
  3. 即便爲保證List 集合線程安全,也不推薦使用Vector 。

Arrays.asList(...) 方法返回的List 集合既不是ArrayList 實例,也不是Vector 實例。Arrays.asList(...) 返回值是一個固定長度的List 集合。

  1. Map

Map 用於保存具備映射關係的數據,所以Map 集合裏保存着兩組值,一組用於保存Map 裏的Key ,另一組用於保存Map 裏的Value。

Map 中的key 和 value 均可以是任何引用類型的數據。

Map 中的Key 不容許重複,即同一個Map 對象的任何兩個Key 經過equals 方法比較都返回false 。

key 和 Value 之間存在單向一對一關係,即經過指定的Key 總能找到惟一的,肯定的Value 。

  1. HashMap 和 HashTable

HashMap 和 Hashtable 是Map 接口的兩個典型實現類。

區別:

HashTable 是一個古老的Map 實現類,不建議使用。

HashTable 是一個線程安全的Map 實現,但HashMap 是線程不安全的。

HashTable 不容許使用null 做爲key 和 value ,而HashMap 能夠。

與HashSet 集合不能保證元素的順序同樣,HashTable、HashMap 也不能保存其中key-value 的順序。

HashTable 、HashMap 判斷兩個key 相等的標準是:兩個key 經過equals 方法返回true,HashCode 值也相等。

HashTable 、HashMap 判斷兩個Value 相等的標準是:兩個Value 經過equals 方法返回true 。

  1. LinkedHashMap

LinkedHashMap 是HashMap 的子類。

LinkedHashMap 能夠維護Map 的迭代順序:迭代順序與key-value 對的插入順序一致。

7.TreeMap

TreeMap 存儲key-value 時,須要根據key 對key-value 進行排序。TreeMap 能夠保證全部的key-value 處於有序順序。

TreeMap 的Key 排序:

天然排序:TreeMap 的全部key必須實現Comparable 接口,並且全部的key 應該是同一個類的對象,不然將會拋出ClassCastException 。

定製排序:建立TreeMap 時,傳入一個Comparator 對象,該對象負責對TreeMap 中的全部key 進行排序。此時不須要Map 的Key 實現Comparable 接口。

  1. Properties

Properties 類是HashTable 的子類,該對象用於處理屬性文件。

因爲屬性文件裏的key 、value 都是字符串類型,因此properties 裏的key 和 value 都是字符串類型的。

Properties pro = new Properties();

InputStream in = this.class.getClassLoader().getResourceAsStream("jdbc.properties"); // 經過類加載器得到jdbc文件的輸入流

pro.load(in);

String user = pro.getProperties("user");

  1. Collections 工具類

Collections 是一個操做Set 、List 和 Map 等集合的工具類。

Collections 中提供了大量方法對集合元素進行排序、查詢和修改等操做,還提供了對集合對象設置不可變燉對集合對象實現同步控制等方法。

排序操做:

clipboard.png

  1. Enumeration

Enumeration 接口是Iterator 迭代器的「古老版本

相關文章
相關標籤/搜索