java基礎知識複習(7.24)
-
歷史:sun公司開發。
-
三種技術架構:JAVAEE\SE\ME,應對企業級/桌面/開發
-
JDK = java的開發和執行環境 > JRE = 類庫+JVM(執行環境)>JVM
-
javac.exe 編譯 生成class檔案,java執行
2、語法基礎
-
1、關鍵字:static
-
2、識別符號:變數名、類名
-
3、常量
-
4、變數
-
5、資料型別:引用/基本資料型別
級別從低到高:
byte、char、short ----int ----float----long----double
自動型別提升:低級別到高級別
強制型別轉換:強制把高級別的賦給一個低級別的
-
6、運算子號
短路與:||,左邊為false,右邊不參與運算
短路或:&&,左邊為true,右邊不參與運算
-
7.語句:if/else
-
8.函式:
-
修飾符 返回值型別 函式名(引數型別 形參)
-
-
9、陣列
-
java分了5片記憶體:暫存器、本地方法區、方法區、棧、堆
-
棧:儲存區域性變數
-
堆:儲存陣列和物件,即實體(封裝多個數據的)
-
-
10、面向物件
-
理解:所有的事物都是物件,java的物件是對現實世界的抽象與簡化
-
物件均有屬性和行為
-
多個物件均有的相同或相似的行為和屬性,抽提為類
-
匿名物件:當僅對物件進行一次呼叫時
-
成員變數/區域性變數:
-
建構函式:對物件進行初始化。
-
面向物件特徵:封裝、多型、繼承
-
靜態程式碼塊----》構造程式碼塊----》建構函式
-
繼承的弊端:打破了封裝性
-
使用final關鍵字修飾類、方法、常量,不可被繼承、重寫
-
-
抽象類/抽象方法:
-
抽象方法只能定義在抽象類中,abstract
-
抽象類不可以被例項化,但可以不定義抽象方法
-
不能和final、private,static共存
-
-
模板設計模式:
-
功能內一部分實現確定(不想被改變,可用final),一部分不確定,可以把不確定的部分暴露出去(abstract),讓子類實現
-
-
-
介面:
-
介面的成員:
-
全域性變數:public static final
-
抽象方法:public abstract
-
-
介面可以多實現,但繼承只能單繼承
-
介面用於功能的擴充套件
-
介面和抽象類,都是不斷向上抽取的結果,但介面一般用於定義物件的擴充套件功能,抽象是對一個體系單元的抽取
-
-
多型:父類或介面的引用指向了子類的物件
-
instanceOf 判斷物件是否實現了指定的介面或繼承了指定的類
-
-
-
異常:
-
編譯被檢查的異常在函式內被丟擲,函式必須要宣告,否編譯失敗。
-
宣告的原因:是需要呼叫者對該異常進行處理。
-
執行時異常如果在函式內被丟擲,在函式上不需要宣告。
-
不宣告的原因:不需要呼叫者處理,執行時異常發生,已經無法再讓程式繼續執行,所以,不讓呼叫處理的,直接讓程式停止,由呼叫者對程式碼進行修正。
-
-
多執行緒:
-
程序:正在進行中的程式,其實就是一個應用程式執行時的記憶體分配空間。
-
執行緒:程序中的一個程式執行控制單元,共享執行緒的空間和資源。
-
主執行緒:main函式
-
單獨一個執行緒:垃圾回收
-
-
隨機性:哪個執行緒獲取到CPU的執行權,哪個執行緒就執行
-
狀態:
-
被建立:start
-
執行:執行資格 + 執行權
-
凍結:釋放執行資格 + 執行權
-
臨時阻塞:有執行資格 + 無執行權
-
消亡:stop()
-
-
步驟:
-
1,定義類繼承Thread類或者繼承Runnable介面;
-
2,目的是複寫run方法,將要讓執行緒執行的程式碼都儲存到run方法中;
-
3,通過建立Thread類的子類物件,建立執行緒物件
-
4,呼叫執行緒的start方法,開啟執行緒,並執行run方法。
-
-
實現runnable介面可以避免單基礎的侷限性
-
同步:
-
好處:解決了執行緒安全問題,synchronized
-
壞處:降低了執行效率
-
鎖:位元組碼檔案物件,
-
同步函式:對於靜態方法:類名.class,否則是this鎖
-
同步程式碼塊:任意物件
-
-
-
-
字串
-
String:用String類進行描述,對字串進行了物件的封裝
-
特點:“一旦被初始化,就不可以被改變”
-
方法:valueOf() 轉換字元陣列,基本資料型別為字串
-
-
StringBuffer:字串緩衝區---執行緒安全的
-
構造一個不帶字元的字串緩衝區,初始容量為16個字元,可變長度
-
方法:
-
增:append()\insert()
-
刪:delete(),左閉右開
-
修改:replace()
-
查詢:indexOf()
-
其他:reverse()
-
-
-
StringBuilder:字串緩衝區---執行緒不安全的
-
該類被設計用作 StringBuffer 的一個簡易替換,用在字串緩衝區被單個執行緒使用的時候(這種情況很普遍),執行緒不安全但是效率高。
-
-
-
包裝類:
-
Integer i = 4; //自動裝箱,1.5版本後的寫法;
-
-
集合框架*
-
集合和數值的區別:
-
1:陣列是固定長度的;集合可變長度的。
-
2:陣列可以儲存基本資料型別,也可以儲存引用資料型別;集合只能儲存引用資料型別。
-
3:陣列儲存的元素必須是同一個資料型別;集合儲存的物件可以是不同資料型別。
-
-
Collection
-
List:元素有序,可重複,判斷元素是否相同,使用equals判斷,因此需要重寫equals()
-
ArrayList:主要實現類,底層資料機構是陣列,執行緒不同步,查詢元素快
-
可變長度原理:按照原陣列的50%延長,初始含量為10,將新元素加入新陣列
-
-
LinkedList:雙向連結串列,執行緒不同步,增刪速度快
-
可變長度原理:按照原陣列的50%延長,初始含量為10,將新元素加入新陣列
-
-
Vector:古老是實現類,執行緒同步
-
-
Set:元素無序,不可重複
-
HashSet:底層連結串列+陣列,無序高效,可以儲存null值
-
通過hashCode、equals 共同保證唯一性
-
LinkedHashSet:按照新增順序,用於遍歷
-
-
TreeSet
-
對Set進行指定元素的指定排序
-
元素需要時同一型別
-
實現Comparable(複寫compareTo)\Comparator(複寫Compare)
-
保證唯一的方式,就是參考比較方法的結果是否為0
-
-
-
-
-
Map 鍵值對,保證鍵的唯一性
-
|——Hashtable:底層是雜湊表(底層連結串列+陣列)資料結構,是執行緒同步的。不可以儲存null鍵,null值。
-
|——HashMap:底層是雜湊表資料結構,是執行緒不同步的。可以儲存null鍵,null值。替代了Hashtable.
-
|——TreeMap:底層是二叉樹結構,可以對map集合中的鍵進行指定順序的排序。
get(key) 通過鍵,獲取值
-
遍歷
-
keySet()
-
values()
-
entrySet()
-
-
-
-
-
使用集合的技巧:
看到Array就是陣列結構,有角標,查詢速度很快。
看到link就是連結串列結構:增刪速度快,而且有特有方法。addFirst; addLast; removeFirst(); removeLast(); getFirst();getLast();
看到hash就是雜湊表,就要想要雜湊值,就要想到唯一性,就要想到存入到該結構的中的元素必須覆蓋hashCode,equals方法。
看到tree就是二叉樹,就要想到排序,就想要用到比較。
比較的兩種方式:
一個是Comparable:覆蓋compareTo方法;
一個是Comparator:覆蓋compare方法。
LinkedHashSet,LinkedHashMap:這兩個集合可以保證雜湊表有存入順序和取出順序一致,保證雜湊表有序。
-
Arrays 用於運算元組物件的工具類
-
.asList(arr) 把陣列轉換成List集合
-
集合變陣列 :Collection介面中的方法:toArray();
-
增強for,可用於集合 +陣列
-
泛型
-
泛型技術