Java基礎學習筆記
Java基礎思維導圖
左鍵在“新標籤頁開啟圖片”可檢視高清大圖
一、Java入門
-
特性與優勢
高可用 高併發 高效能
面向物件、多執行緒、簡單性(去掉了記憶體分配、指標)、跨平臺(可移植性)、高效能、分散式、動態性、多執行緒、安全性、健壯性 -
Java三大版本
JavaME JavaSE JavaEE
JDK JER JVM
JDK 開發需要使用
JER 執行需要使用
JVM 虛擬機器 -
資料型別
byte short int long double float char boolean
數字預設值:0 0.0
布林預設值:false引用型別預設值:null
0b 二進位制
0x 十進位制
0 八進位制 -
idea 生成JavaDoc文件
生成文件 javadoc -encoding UTF-8 -charset UTF-8 Demo05.java -
變數作用域
類變數 static
例項變數
區域性變數 -
基本運算子
+ - * / %
三元運算子
++a 先運算後賦值
a++ 先賦值後運算
位運算
A:0011 1100
B:0000 1101
A&B (與) 兩者都是1,則得1
A|B (或) 兩者都是0,則得0
A^B (異或) 兩者相同得0,否則是1
~B (取反)
<<(左移) * 2 2<<3 = 16
>>(右移) / 2
二、結構
順序結構
迴圈結構
while、DoWhile、for、增強for迴圈
條件結構
if、switch
流程控制
break、continue
三、方法
過載、命令列傳參、可變引數
遞迴,就是自己呼叫自己,遞迴可算出積乘。遞迴層次不宜算得太多。
邊界條件、前階段、返回階段
引用傳遞、值傳遞
四、陣列
定義動態陣列
型別[] 變數名 = new 型別[]
靜態陣列
型別[] 變數名 = {1 , 2, 3}
物件陣列
物件[] 變數名 = {物件, 物件}
多維陣列
型別[][] 變數名 = {{}, {}, {}}
堆疊
堆:存放new的物件和陣列,可以被所有執行緒共享,不會存放別的物件引用
棧:存放基礎變數型別 引用物件的變數
氣泡排序
有多少值,迴圈多少次,每一次迴圈求出最大值或最小值,置於當前迴圈的索引,後續迴圈會越來越少,越來越快。
稀疏陣列
記錄原始陣列的座標與值
五、面向物件(OOP)
本質:以類的方式寫程式碼,以物件的方式封裝資料
構造器:有參構造、無參構造
呼叫父類的構造器,必須在子類構造器的第一行
super與this不能同時呼叫構造器
三大特性:封裝、繼承、多型
多型:同一個事物具有多種形態
物件的方法與屬性會儲存在方法區,例項化的物件名會儲存在棧,物件內容儲存在堆
程式設計:高內聚、低耦合
封裝:屬性私有,get/set
繼承:子類無參不能呼叫父類有參,除非在構造器中用super(有參)
重寫:子類重寫父類的方法,子類和父類的方法一致,方法體不同
多型:
多型是方法的多型,屬性沒有多型
存在條件:繼承關係,方法需要重寫,父類引用指向子類物件
不能重寫的方法:static、final、private
instanceof:判斷兩個類是否有父子級關係
子類可轉父類可能會丟失一些方法,父類轉子類不會
父轉子:Student student = (Student)person;
子轉父:Person person = student;
程式碼塊:靜態程式碼塊、匿名程式碼塊
靜態匯入包:import static java.lang.Math.random;
最終類 final 不可被繼承
抽象類 abstract
1、抽象類中的方法在繼承類必須被實現,抽象類無法實現抽象方法。
2、抽象方法只能存在抽象類中
3、抽象類不能通過new例項化
4、抽象類可以寫普通方法
個人理解,抽象的存在是為了規範類,使類具有約束性,並能體現面向物件的思維
介面 implements
普通類只有具體的實現,抽象類有實現和規範,介面只有規範
介面的本質是契約,介面中的方法預設public abstract
一個類可以實現多個介面
介面命名:UserService,實現類命名:UserServiceImpl
可利用介面實現多繼承
介面定義的變數都是靜態的常量
介面不能被例項化,沒有構造方法
內部類,可以使用外部類的屬性與方法
靜態內部類,無法使用外部類的屬性與方法,除非是靜態的
區域性內部類,存在於方法的類
匿名內部類,例項後,未儲存例項化的物件,例項化介面,需要直接實現
一個檔案中,只能有一個public的外部類
六、異常
異常關鍵字:try、catch、finally、throw、throws
異常,分為虛擬機器異常Error、人為異常Exception
try至catch是要監聽的程式碼塊,catch中是出現異常的處理,finally無論是否出現異常,都會執行
可寫多個catch,根據異常權重排序(從小到大)
主動丟擲異常 throw new ArithmeticException()
方法丟擲異常 throws ArithmeticException()
可以自定義異常,繼承Exception