java基礎
1.抽象類和接口的區(qū)別?
類型 | Abstract Class | Interface |
---|---|---|
定義 | abstract class | interface |
繼承 | 抽象類可以繼承一個類和實現(xiàn)多個接口;子類只可以繼承一個抽象類 | 接口只可以繼承接口(一個或多個);子類可以實現(xiàn)多個接口 |
訪問修飾符 | 抽象方法可以有public,protected和default這些修飾符 | 接口方法默認修飾符是public,你不可以使用其他修飾符 |
方法實現(xiàn) | 可以定義構造方法,可以有抽象方法和具體方法 | 接口完全是抽象的,沒有構造方法,且方法都是抽象的.不存在具體方法 |
實現(xiàn)方式 | 子類使用extends關鍵字來繼承抽象類.如果子類不是抽象類的話,它需要提供抽象類中所有聲明方法的實現(xiàn) | 子類使用關鍵字implements來實現(xiàn)接口,它需要提供接口中所有聲明的方法實現(xiàn) |
作用 | 為了把相同的東西提取出來,即重用 | 為了把程序模塊進行固化的契約,為了降低耦合 |
2.重載和重寫的區(qū)別?
重載
方法有相同的名稱,但是參數(shù)列表不相同的情形,這樣的同名不同參數(shù)的方法之間,互相稱之為重載方法
重寫
Java的子類和父類中有兩個名稱,參數(shù)列表和返回值類型都相同的方法.由于他們具有相同的方法簽名,所以子類中的新方法將覆蓋父類中原有的方法.
重寫是父類與子類之間的多態(tài)性,對父類的方法進行重新定義
兩者區(qū)別
重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段.多個同名方法同時存在,具有不同的參數(shù)個數(shù)/類型.重載是一個類中多態(tài)性的一種表現(xiàn).而重寫是父類與子類之間的多態(tài)性,是對父類方法的重新定義.
3.stringBuffer和stringBuilder的區(qū)別?
線程安全
類型 | Stringbuffer | StringBuilder |
---|---|---|
線程安全 | 線程安全,所有公開方法都是synchronized修飾 | 線程不安全 |
緩沖區(qū) | 每次獲取toString都會直接使用緩沖區(qū)的toStringCache(最后一次toString的緩存值)值來構造一個字符串 | 每次toString都要復制一次字符數(shù)組,再構造一個字符串 |
性能 | 由于公開方法都加synchronized,性能很差 | 不加鎖,性能遠大于Stringbuffer |
4.集合的體系架構
批注 2020-07-17 182119.jpg