教面試官ReentrantLock源碼
627
2025-04-02
java基礎及語法
JDK=JRE+JAVA開發工具 ?JRE=JVM+JAVA核心類庫(J2SE )
.java編寫到到運行過程 ?java文件(代碼文件) ?--> ? class文件(字節文件) ? --> ? JVM ?-->執行 ? ? ? ? ? javac ?編譯 ?java 運行
j2 se關鍵字
{ }( )空格代表方法和判斷條件
continue(跳出本次),break(終止),if{ }else{ },while(){ },do{ }while( ),for( ; ; )
函數,數組
插入排序,希爾排序,選擇排序
冒泡排序
for (int j = 0; j < a.length - 1; j++) {
for (int i = 0; i < a.length - j - 1; i++) {
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
二分查找
// 上限 中值 下限
int min, mid, max;
min = 0;
max = tmp.length - 1;
mid =( min + max) / 2;
while (tmp[mid] != search) {
if (tmp[mid] < search) {
min = mid + 1;
} else if (tmp[mid] > search) {
max = mid - 1;
}
mid = ( min + max) / 2;
}
IO流
createNewFile()
字節流(亂碼問題),字符流
輸入流:java.io.InputStream 輸出流:java.io.OutputStream
final和finally
final修飾在
類 :不能繼承
屬性 :不能賦值
方法: ?不能重寫
finally肯定會執行,最后執行 ? try{ ? }catch{ ? }finally { }
/:除
%:取余
++:自增(在原值的基礎上加一)
前++ 先增加后操作 int i=0; int result=++i; i為1 result為1
后++ 先操作后增加 int i=0; int result=i++; i為1 result為0
運算符== ?和equals()
StringBuffer中 ? ( == ?和equals() 一樣 ?同為判斷內存地址)
String中
== ? ? 判斷內存地址
和equals() ? 判斷值(String中重寫了equals() 方法)
基本類型,泛型
全局變量默認為0
局部變量需要賦值
泛型,T指定類型
單繼承,多實現接口
extends 繼承
父構造器有參數 ? ? 子類構造器必須super(5)傳參,且需放在第一行
super關鍵字作用
1:主要存在于子類方法中,用于指向子類對象中父類對象。 2:訪問父類的屬性 3:訪問父類的函數 4:訪問父類的構造函數
重寫方法:方法名,返回類型,參數都一致
對象流
實現了Serializable接口
函數返回類型
void ?引用類型和非引用類型(八大基本類型)
類型轉換
(小轉大)自動轉換和強制轉換
存放數據
io流存放
.properties文件配置
java面向對象
面向對象三大特性:封裝,繼承,多態
抽象,接口,枚舉,包
集合,多線程,網絡編程(TCP/UDP)
集合的Collection的使用方法
接口:是代表集合的抽象數據類型。例如 Collection、List、Set、Map 等。之所以定義多個接口,是為了以不同的方式操作集合對象
實現(類):是集合接口的具體實現。從本質上講,它們是可重復使用的數據結構,例如:ArrayList、LinkedList、HashSet、HashMap。
實例化ArrayList();
HashSet 底層數據結構是哈希表。(無序,唯一) 如何來保證元素唯一性? 1.依賴兩個方法:hashCode()和equals()比對字符串
差集、并集。
java泛型,
Map函數
HashMap()
異常
finally肯定會執行,最后執行 ? try{ ? }catch{ ? }finally { }
throw 拋出異常,往上一級拋出
*集合和數組
(List,Set,Map鍵值對)
通過List接口聲明 = 實例化子類
Collection ├List (有序集合,允許相同元素和null) │├LinkedList (非同步,允許相同元素和null,遍歷效率低插入和刪除效率高) │├ArrayList (非同步,允許相同元素和null,實現了動態大小的數組,遍歷效率高,用的多)
查詢快 ?增刪慢
ArrayList初始長度為10,擴容機制1.5倍,old+(old >> 1)初始值加初始值右移一位
│└Vector(同步,允許相同元素和null,效率低) │ └Stack(繼承自Vector,實現一個后進先出的堆棧) └Set (無序集合,不允許相同元素,最多有一個null元素)**
|-HashSet(不按存儲順序,不允許相同元素,最多有一個null元素)
|-TreeSet(不可重復,自定義排序)
自定義排序需要實現Comparable
哈希值一致, ?對象未必一致;哈希值不一致 ? , ? 對象 一定不一致
哈希分組 ?然后通過遍歷組內哈希值再遍歷組內元素
List
ls.add("aa")添加集合元素 ? ls.get(0)//獲取指定位置元素
for (String str : ls) { ?//使用forreach遍歷ArrayList中的元素 ?System.out.print(str+" "); ?}
ls1.addAll(ls);//把另外一個幾個元素放進去
ls.indexOf("cc")//用來查找元素位置,查找不到則返回-1
Map (沒有實現collection接口,key不能重復,value可以重復,一個key映射一個value) ├Hashtable (實現Map接口,同步,不允許null作為key和value,用自定義的類當作key的話要復寫hashCode和eques方法,) ├HashMap (實現Map接口,非同步,允許null作為key和value,用的多) └WeakHashMap(實現Map接口)
Map提供key到value的映射。一個Map中不能包含相同的key,每個key只能映射一個value。
Map numbers = new HashMap (); numbers.put(“one”, new Integer(1));
進程,線程實現*
關鍵字synchronized
使用在方法上,避免單獨跑一個進程
繼承Thread類
實現Runnable接口,需要重寫run方法,通過start()啟動
與繼承Thread類區別:Runnable可實現數據共享
使用匿名內部類->實例化的類Thread再 new Runnable重寫run方法
eg:搶票系統
死鎖的互斥同步 (在互斥的基礎上,讓線程擁有先后順序)
在死鎖進程加入判斷
使用wait( )方法等待進程,notify( )重新喚醒進程
抽象類abstract
接口關鍵字implements
死鎖一旦發生不能解決。只能避免 避免就是 ?互斥(某個時刻只能進入一個線程) ? synchronzied ?同步 (在互斥的基礎上,讓線程擁有先后順序)
反射機制,封裝
封裝:
私有屬性通過一個公開方法進行訪問,就是封裝
私有屬性可以通過反射來獲取
一般步驟:
*獲取Class對象的三種方式 1.通過類名獲取 ? ? ?類名.class ? ?該方法無法加載類 2.通過對象獲取 ? ? ?對象名.getClass() ? 3.通過全類名獲取 ? ?Class.forName(全類名) ?該方法可以加載類,就是可以加載靜態內容
*接口和抽象類的區別
abstract修飾的類-抽象類
子類繼承抽象父類,必須重寫抽象方法
extends繼承父類
創建interface接口類
通過implements繼承接口,可以多繼承用","隔開
抽象類可以有構造函數,接口不可以有構造函數 抽象類中可以有普通成員變量,接口中沒有全局普通成員變量,只能有常量 抽象類中的方法可以被static修飾,接口中的方法不可以被static修飾(jdk1.8之前) 抽象類中可以有普通方法和抽象方法,接口中的方法全是抽象方法(jdk1.8之前) 抽象中的方法可以被public,protected等修飾符修飾,接口中的方法全都是public abstract的方法,如果省略修飾符,則默認的也都是public abstract修飾 一個類只能繼承一個抽象類,接口可以被多實現,即一個類只能繼承一個類,可以實現多個接口
設計模式
單例模式
1.都需先 將構造函數私有化
餓漢式:不管用不用先實例化唯一的對象,消耗內存
private static ?Test3 test = new Test3();
懶漢式:用的時候再實例化唯一的對象,在不實用的時候節約內存(懶加載)
private static ?Test3 test = null;
synchronized
工廠模式
網絡編程
TCP/IP
UDP/IP
Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。