Java基礎<精簡>
1.JVM新加“即時編譯”,將熱點程式碼直接編成底層程式碼,減少增加翻譯之後可能存在的通訊歧義或效率問題;
2.字符集和字元編碼
字符集:Unicode
字元編碼:
utf-8(這個是可變編碼,需要1位用1位,需要15位放15位,最大可擴容到4位元組,標記隔離的方式是這個字元的前2位來標識是否繼續讀);
utf-16(可變的,1個位元組或2位元組,比utf-8容易,比utf-32短);
utf-32
3.引用型別的有:物件、陣列、列舉
4.java記憶體(類只被載入一次):
方法區:
靜態成員變數,程式碼
棧(和執行緒繫結,幾個執行緒幾個棧空間):
堆:
物件、陣列、列舉;
5.java預設的&&和||都是短路的;
6.語句分類:賦值語句、宣告語句、流程語句;
7.switch->byte,short,int,char(及包裝類)、列舉、1.7之後String;
8.for each後可接陣列和實現了iterable介面的;
9.如果想用break跳出兩層迴圈,可以用標籤;
例子:
out: for (int i = 0; i < 8; i++) { for (int j = 0; j < 6; j++) {if(i==2){ break out; } } }
10.方法修飾符:
訪問控制符<防止無呼叫>
default(1.8以後介面中用這個來寫方法體)
final可修飾在類、方法、變數<成員變數 and 區域性變數>(只能賦值一次)、方法引數(引數不可賦值);
final,finally,finalize區別:
final:修飾變數時,該變數為常量,只能賦值一次;
修飾方法時,該方法不可被重寫;
修飾類時,該類不可被繼承;
修飾方法引數,該引數不可被修改;
finally:try-catch後的必然執行的;
11.GC處理:記憶體不夠時、CPU空間時、主動呼叫System.gc();
12.方法簽名:方法名和引數構成方法簽名,方法簽名用於區分函式;
13.Java本身不會有記憶體洩漏,出現記憶體洩漏是因為程式設計師認為操作失誤導致的;