Java簡介
java 是一個面向對象(Object Oriented,OO)的程式設計語言,和其他大多數的
面向對象程式設計語言一樣,都是單根結構,面向對象的最上級水準:萬物皆對象。
瞎扯1:
(即java 裡所有的東西都有共同的‘祖先’ Object),父和子的說法來源于面向
對象三大特征之一的繼承,說面向對象其實也就是面向 Object 這個‘祖先’,畢
竟java裡所有的東西都是 Object 的後代,這個說法就有點 多态 的意思了,面
向(Object),這個參數 Object 可以是 Object 的任何一個後代,當然我們
自己建立的類也是 Object 的後代。
類和對象
類:(歸)類
成員變量,類的屬性、特征
成員方法,類的行為、動作
(構造方法,類變成執行個體時進行的行為/動作)
對象:類具體的例子,類的執行個體
(構造方法 new 出來的)
類與類之間的關系
泛化:
繼承
實作(接口)
依賴:
臨時性,很弱
類 A 作為參數在類 B 中使用
關聯:
長期性,比依賴強
類 A 是類 B 的一個屬性
聚合(弱聚合):
類 A 是類 B 的一個屬性,但是這個屬性可有可無
組合(強聚合):
類 A 是類 B 的一個屬性,這個屬性必須有,同生命周期
面向對象
封裝:
用 private 修飾 成員變量 ,隐藏類内部細節
提供 public 修飾的 getter 和 setter 方法,作為外部通路類内 成員
變量 的入口
(工廠模式就是最好的應用,往下翻有工廠模式)
繼承:(分)類
将一些類的 共同屬性/行為/特征/動作 抽象出來産生一個父類,便于分類
(值得注意的是java特别符合現實中的倫理道德,每個類隻允許有一個父親,
也就是單繼承 extend )
多态:前提是繼承,運作時才會發生(一個LOL戰隊一般都有有很多個隊員,真正
要上場了才知道誰上場誰替補,faker 都替補了:) )
可以說是有兩種: 1.指派多态 2.傳參多态
也可以說是就一種:指派多态。 傳參多态了解為 形式參數 被指派。
我是了解隻有一種:指派多态,待指派的(形式參數/對象引用),在運作
之前被告訴是 XX的孩子 ,但是 XX 有好多個孩子,在運作時才會
被具體告訴是 XX的哪個孩子 。
抽象類:半成品,有的本領自己還沒掌握,但是寄希望于自己的後代(現實中的
父親望子成龍)
重寫/重載:
重寫:修改方法内在,外表不修改(修身養性)
重載:修改方法外表 和 内在,(整容 + 修身養性)
接口:(老師,教 類 本領的,是本領的集合,而且有各種老師)
類想學什麼本領就繼承 什麼老師 ,不過學的有好有壞,學習後掌握的程度
也都大不相同,是以每個本領都得具體到自己身上,也就是要重寫那個本領
(想到說每一次考曆史都是改寫曆史的同學,還有表面上體育課---)。
I/O
Input:輸入到java運作環境jvm裡
Output:從java運作環境jvm輸出
位元組流和字元流的差別:
位元組流:直接操作檔案
字元流:通過緩沖區(記憶體)操作檔案
序列化:将一個對象變成位元組序列 , 繼承接口 Serializable 隻是一個辨別,
表示可被序列化,(類似你拿了CET-4,就辨別你這個人會一點點英語)
集合架構
想仔細了解集合架構,點這裡跳轉到菜鳥教程 Java-集合架構: http://www.runoob.com/java/java-collections.html
那麼多東西誰能記得住,到時候點上面的連結。
ArrayList:動态數組,記憶體空間裡連續,是以查詢快,增删要維護所有的,
是以增删慢
LinkedList:連結清單,記憶體空間裡不連續,是以查詢慢,因為記憶體空間裡是用 鍊
連起來的,增删隻用維護 鍊 就可以了,是以增删快
HashSet:不能重複,不一定是你放進去的順序
TreeSet:不能重複,可以排序
HashMap:key-value
List:一般用來存放資料
Set:做個排序(TreeSet),去個重(HashSet)
Map:做緩存比較好,因為 key-value 。
包裝類
8個包裝類,對應8種基本資料類型,便于進行對象操作。
基本資料類型-包裝類-String 互相轉換:
緩存值範圍:
Boolean: (全部緩存)
Byte: (全部緩存)
Character: (<= 127 緩存)
Short: (-128 — 127 緩存)
Long: (-128 — 127緩存)
Integer: (-128 — 127緩存)
Float: (沒有緩存)
Doulbe: (沒有緩存)
緩存值範圍作用: 判斷該不該 new 一個對象。
見下圖:
設計模式
工廠模式:隐藏生産細節, 想要什麼找什麼工廠生産
抽象工廠:将工廠抽象出父類,例如水果工廠,有蘋果工廠子類,香蕉工廠子類等。
單例:單例類的對象隻允許存在一個,是以就用 private 修飾構造方法,
隻允許自己 new 自己。
餓漢:一上來就直接 new 了。
懶漢:讓一個 public static 的方法(通常是叫 getInstance )來 new,
先判斷 執行個體對象 是否為 null ,是 null 的話就 new ,
不是的話就不 new 并傳回 執行個體對象 的引用。
裝飾者:套殼。(國産浏覽器:))
擴充卡:中間件。将兩個不比對的東西 比對 一下(電源擴充卡。。)
(摘抄自這個部落格https://www.cnblogs.com/V1haoge/p/6479118.html)
1、類擴充卡:
原理:通過繼承來實作擴充卡功能。
簡單的例子:
兩個接口: A , B
兩個接口對應的實作類:A_Impl , B_Impl
擴充卡: Adapter 繼承 B_Impl 實作 A
或者 Adapter 繼承 A_Impl 實作 B
測試類:new 一個 Adapter 類的 對象 adapter 就可以連接配接
接口 A 和 B 。
2、對象擴充卡:
原理:通過組合(強聚合)來實作擴充卡功能。
簡單的例子:
兩個接口: A , B
兩個接口對應的實作類:A_Impl , B_Impl
擴充卡: Adapter 實作 A ,并包含一個 B_impl 類型的成員變量
或者 Adapter 實作 B ,并包含一個 A_impl 類型的成員變量
測試類:new 一個 Adapter 類的 對象 adapter 就可以連接配接
接口 A 和 B 。
3、接口擴充卡:
原理:通過抽象類來實作适配,這種适配稍别于上面所述的适配。
簡單的例子:
接口 A 裡面有很多方法
抽象的 Adapter 空實作 A 的所有方法
實作類 A_Impl 繼承 Adapter ,需要什麼方法就重寫什麼方法