基礎部分:
基礎語法
-
標識符
-
常量與變量
通過final關鍵詞修飾變量,變量賦值後,不能再修改
Java平臺無需顯式的管理內存中的對象,當JRE確定對象不再被使用時將自動銷燬該對象釋放內存空間,這個過程,稱爲垃圾回收
當變量超出作用範圍,變量引用會被刪除,一個沒有任何引用的對象將被垃圾回收器回收
可以通過置變量引用爲null,來顯式的聲明刪除對對象的引用,但僅是聲明,並不會立即釋放內存
同一對象可能有多個引用
垃圾回收器會在合適的時間,自動的,週期性的,釋放沒有引用對象佔用的內存(基於CPU、內存使用情況分析) -
數據類型
布爾型值具體內存佔用由具體虛擬機決定
oracle 1字節8位 openjdk 4字節 = int
代碼中,顯式的固定的數據值,爲字面量long長整型數值。長整型必須以“L”大寫字母L爲後綴,避免與“1”數字1混淆
byte b = 4; //byte b2 =128; //提示類型不匹配 short s = 5; //short s2 = 32768; //提示類型不匹配
值傳遞:
所有基本類型變量不與其他變量共享值,基本數據類型爲值傳遞,而非引用傳遞。因此當被"引用"的值改變時,不會影響"引用"其值的變量
String類型變量雖然爲對象,但依然爲值傳遞
即,8+1類型變量,均爲值傳遞轉換:
基本數字類型之間可以轉換
-
小轉大 可以直接轉換(int to double)
-
大轉小 必須聲明強制轉換(double to int) 向小範圍轉換時,可能造成數據錯誤或丟失
-
-
運算符
當判斷8個基本數據類型的關係時,使用等式與關係運算符;返回布爾類型結果
&&
||
具有短路性
優先級表:
-
流程控制語句
-
if-then, if-then-else, switch
if(表達式) { //then代碼塊 } else { //else代碼塊 }
Switch支持整數/枚舉/字符串作爲表達式;當匹配case中表達式時,執行相應代碼塊;並順次執行之後的全部case分支直到break語句。當均不匹配時執行default
-
for, while, do-while
-
break, continue, return
-
-
方法
組成:修飾符、方法返回類型、方法參數列表、方法體
類中不能存在方法簽名相同的方法,方法簽名是類中一個方法區別於另一個的特徵
方法簽名:方法名稱,方法參數列表(方法參數數量,相應位置的參數類型)決定;與方法的各種修飾符,返回類型,參數名稱等無關
-
Parameter 方法聲明定義中的參數(形參)
-
Argument 方法被調用時實際傳入的參數(實參)
tips:8+1類型是傳遞值
方法重載,
允許具有相同名稱,但不同參數列表的,方法存在。解決了方法功能相同,但必須使用不同命名的缺陷
this,
表示當前對象的引用;可以通過this,在實例方法或構造函數中引用當前對象的成員變量
所有實例方法,都隱式包含一個引用當前對象的變量,名稱爲this。當方法引用類的實例變量時,編譯器隱式的使用this獲取當前對象的實例變量(編譯器自動傳入this對象引用)
-
-
數組
-
數組是按順序存放單一類型,長度固定,的容器對象
-
數組中的每一個項,稱爲元素
-
數組一旦創建,就不能更改長度,即,如需增/刪數組元素而改變數組長度,必須創建一個新數組
-
通過[index]索引訪問數組元素
-
通過length成員常量****(而非方法),獲取數組長度
//靜態創建 int[] intArray2 = {10,20,30}; int[] intArray2 = new int[]{10,20,30}; //動態創建 int[] a = new int[100]; for(int i = 0;i<a.length;i++){ a[i] = i; }
-
-
註解
聲明文檔註釋:使用時可查看註釋信息
/** documentation * 文檔註釋,可生成API文檔 */
關鍵字:
面向對象:
-
面向對象思想
-
類與對象
創建一個對象的基本過程:
-
聲明
Bicyle bicycle
聲明一個名稱爲bicycle,引用Bicycle類型對象的變量。僅聲明瞭一個可以引用指定類型對象的變量,聲明並不會創建一個對象,必須爲其分配一個對象引用才能使用
-
實例化
Bicycle bicycle = new
new操作符通過爲新對象分配內存,並返回該內存的引用來實例化一個類
-
初始化
Bicycle bicycle = new Bicycle(5)
new操作符同時,調用構造函數完成對象的初始化,並把初始化數據寫入內存
-
-
成員變量與局部變量 與靜態
創建對象時,在堆空間爲對象開闢空間,保存屬性數據。因此,類的每一個對象擁有獨立內存空間以及屬性數據
類中,static修飾的變量,稱爲靜態變量或類變量
類的靜態變量置於方法區,而非堆空間
即,其與所在類相關,但不與類的任何對象相關
即,其不基於類的對象而存在
類的私有靜態變量/常量,類的每一個對象均可訪問
類的公有靜態變量/常量,全局可訪問-
類中,實例級方法單向訪問方法靜態方法/變量/常量
-
類中,靜態方法無法訪問實例級方法/變量/this等
靜態代碼塊僅在所在類被加載時執行,且僅執行一次,無論類實例化次數
優先執行靜態代碼塊,靜態代碼塊中的變量是局部變量
-
-
匿名對象
-
封裝
- 基於封裝思想,實體類中封裝的屬性數據,通過對外提供,訪問器(getter/setter)實現
-
this關鍵字
-
構造方法
-
繼承
-
多態
-
抽象類
-
接口
-
內部類
集合:
高級知識
-
線程
-
鎖
-
JDK
-
反射
-
JVM
jvm結構:
Stack(棧):創建線程的同時,創建該線程的棧空間,存儲執行方法的局部變量表(包括:基本數據類型字面量,以及對象的引用);操作棧(調用方法的引用)等
Heap(堆):存儲創建的對象實例,GC主要工作的地方
Method Area(方法區):線程共享的,存儲每一個類的結構信息(包括:類中的屬性/方法等元數據),常量池,靜態變量/常量,方法/構造函數的執行代碼等
-
GC
-
IO和NIO、AIO
版本特性
Java 8
- 函數式編程
- Lambda表達式
- 接口的默認方法(默認方法 在接口中有具體的實現 default
在接口中方法前面加上修飾符default 編譯器會認爲 該方法並非抽象方法 可以在接口中寫實現 - 集合Stream API
- 新的Time API
- 多重註解
- Optional空引用處理
Java 9 & 10 & 11
- JShell互交式編程
- 增強集合stream API
- 增強集合工廠方法
- 增強Optional方法
- 編譯器類型推導變量
- 新字符串加強處理方法
- 接口私有成員變量
- No-Op垃圾回收器
- …………………
梗概
變量 | 變量的聲明,命名規範 |
---|---|
基本數據類型 | 8 + 1基本數據類型,默認值,範圍,大小等 |
整數類型 | 基本整數類型,long類型後綴 |
轉義符 | 特殊含義字符輸出的處理 |
常量 | 常量的聲明,命名規範 |
數組 | 數組的類型,,創建方法,索引,長度,引用傳遞 |
字面量 | 基本類型的字面量,值傳遞與引用傳遞 |
變量的作用範圍 | 域,實例變量,類變量,類常量,局部變量,參數,默認值 |
算術運算符 | 取模,字符串拼接 |
等式與關係運算符 | 基本類型使用 == 判斷值是否相等 |
條件運算符 | 布爾表達式執行條件,短路特性 |
運算符優先級 | 建議使用()括號強調有限順序 |
基本數據類型轉換 | 大範圍到小範圍的強制轉換 |
註釋 | 單行,多行,文檔 |
If then else | 表達式值與執行的代碼塊 |
switch | 支持的類型,支持字符串,固定項,break,適應場景 |
While | 表達式 |
For | 聲明方法,循環的過程 |
foreach | 適應場景,優缺點 |
Break | 終止的範圍 |
Return | 方法的退出,有/無返回值的聲明 |
Classes and Objects Summary
---- | Content |
---|---|
類 | 面向對象中的類;聲明,命名規範;單繼承 |
屬性 | 命名規範;提供getter/setter方法,及方法的命名規範;Boolean類型屬性getter方法命名 |
方法 | 方法的名稱規範;聲明;參數列表;方法簽名;方法重載;返回值; |
構造函數 | 聲明;有參/無參;約束; |
參數 | 形參/實參;可變長度的參數;命名規範;值傳遞/引用傳遞; |
對象 | 對象的基本創建過程;使用方法;this關鍵詞 |
垃圾回收器 | Java平臺處理對象的特點;對象資源釋放的時機與時間 |
訪問級別修飾符 | 頂級/成員級修飾符;修飾目標的可見範圍; |
靜態變量 | 聲明;使用場景;特點;與類實例的關係;使用方法;命名 |
靜態方法 | 聲明;使用場景;特點;與類實例變量/方法的關係; |
常量 | 基本類型與引用類型常量各種的特點;命名; |
靜態塊 | 作用;加載;執行順序 |
靜態內部類 | 聲明創建方法;作用;使用場景 |
枚舉 | 聲明;使用場景 |