Java常問(wèn)基礎(chǔ)知識(shí)了解

數(shù)據(jù)類(lèi)型:
  • 基本數(shù)據(jù)類(lèi)型:byte、short、int、long、float、double、char、boolean
  • 引用數(shù)據(jù)類(lèi)型: 數(shù)組、類(lèi)、接口。
  • 級(jí)別從低到高為:byte、char、short(平級(jí))- ->int- ->float- ->long- ->double
  • 自動(dòng)類(lèi)型轉(zhuǎn)換:從低級(jí)別到高級(jí)別,系統(tǒng)自動(dòng)轉(zhuǎn)的;
  • 強(qiáng)制類(lèi)型轉(zhuǎn)換:把一個(gè)高級(jí)別的數(shù)賦給一個(gè)別該數(shù)的級(jí)別低的變量;
常用數(shù)據(jù)結(jié)構(gòu):
  • 數(shù)組
    數(shù)組是可以再內(nèi)存中連續(xù)存儲(chǔ)多個(gè)元素的結(jié)構(gòu),在內(nèi)存中的分配也是連續(xù)的,數(shù)組中的元素通過(guò)數(shù)組下標(biāo)進(jìn)行訪(fǎng)問(wèn),數(shù)組下標(biāo)從0開(kāi)始。

  • 棧是一種特殊的線(xiàn)性表,僅能在線(xiàn)性表的一端操作,棧頂允許操作,棧底不允許操作。 棧的特點(diǎn)是:先進(jìn)后出,或者說(shuō)是后進(jìn)先出,從棧頂放入元素的操作叫入棧,取出元素叫出棧。棧的結(jié)構(gòu)就像一個(gè)集裝箱,越先放進(jìn)去的東西越晚才能拿出來(lái),所以,棧常應(yīng)用于實(shí)現(xiàn)遞歸功能方面的場(chǎng)景,例如斐波那契數(shù)列。
  • 隊(duì)列
    隊(duì)列與棧一樣,也是一種線(xiàn)性表,不同的是,隊(duì)列可以在一端添加元素,在另一端取出元素,也就是:先進(jìn)先出。從一端放入元素的操作稱(chēng)為入隊(duì),取出元素為出隊(duì)。
  • 鏈表(單鏈表、雙向鏈表、循環(huán)鏈表)
    鏈表是物理存儲(chǔ)單元上非連續(xù)的、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表的指針地址實(shí)現(xiàn),每個(gè)元素包含兩個(gè)結(jié)點(diǎn),一個(gè)是存儲(chǔ)元素的數(shù)據(jù)域 (內(nèi)存空間),另一個(gè)是指向下一個(gè)結(jié)點(diǎn)地址的指針域。根據(jù)指針的指向,鏈表能形成不同的結(jié)構(gòu),例如單鏈表,雙向鏈表,循環(huán)鏈表等。
  • 樹(shù)
    樹(shù)是一種數(shù)據(jù)結(jié)構(gòu),它是由n(n>=1)個(gè)有限節(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合。把它叫做 “樹(shù)” 是因?yàn)樗雌饋?lái)像一棵倒掛的樹(shù),也就是說(shuō)它是根朝上,而葉朝下的。它具有以下的特點(diǎn):

每個(gè)節(jié)點(diǎn)有零個(gè)或多個(gè)子節(jié)點(diǎn);
沒(méi)有父節(jié)點(diǎn)的節(jié)點(diǎn)稱(chēng)為根節(jié)點(diǎn);
每一個(gè)非根節(jié)點(diǎn)有且只有一個(gè)父節(jié)點(diǎn);
除了根節(jié)點(diǎn)外,每個(gè)子節(jié)點(diǎn)可以分為多個(gè)不相交的子樹(shù);

  • 散列表
    散列表,也叫哈希表,是根據(jù)關(guān)鍵碼和值 (key和value) 直接進(jìn)行訪(fǎng)問(wèn)的數(shù)據(jù)結(jié)構(gòu),通過(guò)key和value來(lái)映射到集合中的一個(gè)位置,這樣就可以很快找到集合中的對(duì)應(yīng)元素。

  • 堆是一種比較特殊的數(shù)據(jù)結(jié)構(gòu),可以被看做一棵樹(shù)的數(shù)組對(duì)象,具有以下的性質(zhì):

堆中某個(gè)節(jié)點(diǎn)的值總是不大于或不小于其父節(jié)點(diǎn)的值;
堆總是一棵完全二叉樹(shù)。


  • 圖是由結(jié)點(diǎn)的有窮集合V和邊的集合E組成。其中,為了與樹(shù)形結(jié)構(gòu)加以區(qū)別,在圖結(jié)構(gòu)中常常將結(jié)點(diǎn)稱(chēng)為頂點(diǎn),邊是頂點(diǎn)的有序偶對(duì),若兩個(gè)頂點(diǎn)之間存在一條邊,就表示這兩個(gè)頂點(diǎn)具有相鄰關(guān)系。
Java常用設(shè)計(jì)模式

參考 https://zhuanlan.zhihu.com/p/575645658

設(shè)計(jì)模式的分類(lèi),總體來(lái)說(shuō)分為三大類(lèi):

  • 創(chuàng)建型模式,共五種:工廠(chǎng)方法模式、抽象工廠(chǎng)模式、單例模式、建造者模式、原型模式。
  • 結(jié)構(gòu)型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀(guān)模式、橋接模式、組合模式、享元模式。
  • 行為型模式,共十一種:策略模式、模板方法模式、觀(guān)察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪(fǎng)問(wèn)者模式、中介者模式、解釋器模式。
Java設(shè)計(jì)原則
  1. 單一職責(zé)原則(Single Responsibility Principle, SRP):每個(gè)類(lèi)應(yīng)只負(fù)責(zé)一個(gè)單一的責(zé)任,這樣可以使代碼更加清晰、易維護(hù),并降低類(lèi)間的耦合度。

  2. 開(kāi)放封閉原則(Open-Closed Principle, OCP):軟件實(shí)體(如類(lèi)、模塊、函數(shù))應(yīng)該是“對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉”,即在不影響現(xiàn)有功能和測(cè)試的情況下,允許添加新的功能和進(jìn)行修改。

  3. 里氏替換原則(Liskov Substitution Principle, LSP):子類(lèi)型必須能夠替換它們的基類(lèi)型,確保軟件系統(tǒng)的行為不因基類(lèi)型的更換而受到影響。

  4. 接口隔離原則(Interface Segregation Principle, ISP):客戶(hù)端不應(yīng)依賴(lài)它不需要的接口,以降低模塊間的耦合度。

  5. 依賴(lài)倒置原則(Dependency Inversion Principle, DIP):高層模塊不應(yīng)該依賴(lài)于低層模塊,而是應(yīng)該依賴(lài)于抽象,通過(guò)依賴(lài)注入等方式實(shí)現(xiàn)高內(nèi)聚低耦合的設(shè)計(jì)。

  6. 迪米特法則(Demeter Principle):一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象保持最少的了解,即“不要與陌生人說(shuō)話(huà)”,通過(guò)封裝和多態(tài)來(lái)實(shí)現(xiàn)解耦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容