corejava相關(guān)知識(shí)點(diǎn)總結(jié)
corejava知識(shí)點(diǎn)歸納
浮點(diǎn)類(lèi)型:float(4byte),double(8byte)
字符類(lèi)型:char(2byte)
邏輯類(lèi)型:boolean(false/true 1byte)
2、說(shuō)出5個(gè)啟動(dòng)時(shí)異常
RunTimeException
------NullPointerException
------ArrayIndexOutOfBoundsException
------ClassCastException
------NumberFormatException
3、HashMap 和HashTable的區(qū)別:
1HashMap 允許空鍵值對(duì),HashTable不允許
2HashMap不是線程安全的,HashTable是
3HashMap直接實(shí)現(xiàn)Map接口,HashTable繼承Dictionary類(lèi)
4、ArrayList,Vector,LinkedList存儲(chǔ)性能和區(qū)別它們都實(shí)現(xiàn)了List接口 ArrayList和Vector都是基于數(shù)組實(shí)現(xiàn)的
LinkedList基于雙向循環(huán)鏈表(查找效率低,添加刪除容易)
ArrayList不是線程安全的而Vector是線程安全的,所有速度上ArrayList高于Vector
5、Collection和Collections的區(qū)別
Collection是集合類(lèi)的上級(jí)接口,繼承與他的接口主要有Set和List
Collections是針對(duì)集合類(lèi)的一個(gè)幫助類(lèi),他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜 索、排序、線程安全等操作。
6、List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?
List以特定次序來(lái)持有元素,可有重復(fù)元素。
Set 無(wú)法持有重復(fù)元素,內(nèi)部排序
Map保存key-value值,value可多值。
7、final,finally,finalize的區(qū)別
Final用于聲明屬性,方法和類(lèi),分別表示屬性不可變,方法不可覆蓋,類(lèi)不可繼承
Finally 是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行
Finalize 是Object類(lèi)的一個(gè)方法,在垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。
8、Overload和Override的區(qū)別。Overload的方法是否可以改變返回值的類(lèi)型? 方法的重寫(xiě)Override和重載Overload是Java多態(tài)的不同表現(xiàn)。
重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)的一種表現(xiàn),方法名,參數(shù)列表返回值類(lèi)型都得與父類(lèi)的方法一直。
重載Overloading是一種類(lèi)中多態(tài)的一種表現(xiàn)。重載的方法是可以改變返回值類(lèi)型的。
9、用一句話(huà)總結(jié)一下冒泡排序依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。
10、實(shí)現(xiàn)線程安全的兩種方式
1)synchronized方法:通過(guò)在方法聲明加入synchronized關(guān)鍵字來(lái)聲明synchronized方法
2)Synchronized塊:通過(guò)synchronized關(guān)鍵字來(lái)聲明synchronized快
11、說(shuō)一下"=="和equal()方法在字符串變量操作中的不同?
"=="比較的是兩個(gè)字符串對(duì)象的地址,equal() 是比較兩個(gè)字符串的具體值
12、sleep和wait方法有什么區(qū)別
Sleep是線程(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,把執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。
Wait是Object類(lèi)的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象進(jìn)入運(yùn)行狀態(tài)。
13、&和&&的區(qū)別
&位運(yùn)算符:非短路運(yùn)算符,它會(huì)把所有條件執(zhí)行完畢之后,才會(huì)返回結(jié)果 &&邏輯運(yùn)算(and):短路運(yùn)算符,遇到不符合條件,立即終止程序的執(zhí)行
14、error和exception的區(qū)別
Error:表示恢復(fù)是不可能的一種嚴(yán)重的問(wèn)題,比如:內(nèi)存溢出,不指望程序處理
Exception 程序運(yùn)行時(shí)的異常,如果程序設(shè)計(jì)合理不會(huì)出現(xiàn)的情況
15、請(qǐng)說(shuō)出你鎖知道的線程同步的方法
Wait():使一個(gè)線程處于等待狀態(tài),并且釋放所有持有的對(duì)象的lock;
Sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常;
Notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。
notityAll():?jiǎn)拘阉刑幱诘却隣顟B(tài)的線程,注意不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競(jìng)爭(zhēng)。
16、網(wǎng)絡(luò)編程中涉及并發(fā)服務(wù)器,使用多進(jìn)程和多線程,請(qǐng)問(wèn)有什么區(qū)別?
1)進(jìn)程:子進(jìn)程是父進(jìn)程的復(fù)制品子進(jìn)程獲得父進(jìn)程數(shù)據(jù)空間堆和棧的復(fù)制品
2)線程:相對(duì)于進(jìn)程而言,線程是一個(gè)更加接近與執(zhí)行體的概念,它可以與同進(jìn)程的其他進(jìn)程共享數(shù)據(jù),但擁有自己的棧空間,擁有獨(dú)立的執(zhí)行序列兩者都可以提高程序的并度,提高程序運(yùn)行效率和響應(yīng)時(shí)間。
線程和進(jìn)程在使用上各有優(yōu)缺點(diǎn):線程執(zhí)行開(kāi)銷(xiāo)小,但不利于資源管理和保護(hù);而進(jìn)程正相反同時(shí),線程適合于在SMP機(jī)器上運(yùn)行,而進(jìn)程則可以跨機(jī)器遷移。
17、什么是反射?
在運(yùn)行過(guò)程中:
1對(duì)于任意一個(gè)類(lèi),可以知道這個(gè)類(lèi)的屬性和方法。
2對(duì)于任意一個(gè)對(duì)象,可以調(diào)用這個(gè)對(duì)象的任意方法。
對(duì)于這種動(dòng)態(tài)獲取的信息,以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能成為反射。 Java反射機(jī)制提供的功能
1運(yùn)行時(shí)判斷任意對(duì)象的所屬類(lèi)
2運(yùn)行時(shí)構(gòu)造任意類(lèi)的對(duì)象
3運(yùn)行時(shí)判斷和調(diào)用對(duì)象的成員變量和方法
4生成動(dòng)態(tài)代理
18、線程的基本概念、線程的本狀態(tài)及狀態(tài)之間的關(guān)系
新建(Born)新建的線程處于新建狀態(tài)
就緒(Ready)在創(chuàng)建線程后,它將處于就緒狀態(tài),等待start()方法被調(diào)用運(yùn)行(Running)線程在開(kāi)始執(zhí)行時(shí)進(jìn)入運(yùn)行狀態(tài)
睡眠(Sleeping)線程的執(zhí)行可通過(guò)sleep()方法來(lái)暫時(shí)中止。在睡眠后,線程將進(jìn)入就緒狀態(tài)
等待(Waiting):如果調(diào)用了wait()方法,線程將處于等待狀態(tài)。用于在兩個(gè)或多個(gè)線程并發(fā)運(yùn)行時(shí)。
掛起(Suspended)在臨時(shí)停止或中斷線程的執(zhí)行時(shí),線程就處于掛起狀態(tài) 。 阻塞(Blocked)在線程等待一個(gè)事件時(shí)(例如輸入/輸出操作),就稱(chēng)處于阻塞狀態(tài)
死亡(Dead)在run()方法已經(jīng)執(zhí)行或其stop()方法被調(diào)用之后,線程就處于死亡狀態(tài)
19、描述下JVM加載class文件的原理機(jī)制
JVM中類(lèi)的裝載是由ClassLoader和它的子類(lèi)來(lái)實(shí)現(xiàn)的java ClassLoader是一個(gè)重要的java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類(lèi)文件的類(lèi)。
20、什么是觸發(fā)器和存儲(chǔ)過(guò)程
觸發(fā)器是存儲(chǔ)在數(shù)據(jù)庫(kù)中的塊,這個(gè)塊一旦被構(gòu)造后,就可以多次執(zhí)行,當(dāng)觸發(fā)它的事件發(fā)生時(shí)調(diào)用該觸發(fā)器。觸發(fā)事件是指對(duì)表中數(shù)據(jù)的操作,如插入、刪除和修改。
存儲(chǔ)過(guò)程是將常用的或很復(fù)雜的工作,預(yù)先用SQL語(yǔ)句寫(xiě)好并用一個(gè)指定的名稱(chēng)存儲(chǔ)起來(lái),那么以后要叫數(shù)據(jù)庫(kù)提供與已定義好的存儲(chǔ)過(guò)程的功能相同的服務(wù)時(shí),只需調(diào)用execute,即可自動(dòng)完成命令。我的理解就是一堆sql的集合,可以建立非常復(fù)雜的查詢(xún),編譯運(yùn)行,所以運(yùn)行一次后,以后再運(yùn)行速度比單獨(dú)執(zhí)行 SQL快很多
21、什么是回調(diào)函數(shù)
某個(gè)程序S(Student.main)調(diào)用服務(wù)程序A(Arrays)中的某個(gè)方法(sort),服務(wù)程序A的sort方法在某個(gè)時(shí)候反過(guò)來(lái)調(diào)用S的某個(gè)方法(compareTo),這種情況下,compare叫做S的回調(diào)方法。
例如:public class Student implements Compareble{
Private int id;
Private String name;
Private int age;
Private int score;
//構(gòu)造器
//getter/setter方法
//回調(diào)方法
Public int compareTo(Object obj){
Return
This.id-((Student)obj).id;
}
}
Student s1 = new Student(1,"a",18,89);
Student s2 = new Student(2,"a",18,89);
Student s3 = new Student(3,"a",18,89);
Student [] arrs = {s1,s2,s3};
Arrays.sort(arrs);
22、遍歷文件夾下所有.java的文件?
Public void listFiles(String path){
File dir = new File(path);
Files [] files = dir.listFiles(new FileFilter(){
Public boolean accept(File f){
Return f.getName().endWith(".java");
}
});
For(File file:files){
System.out.print(file.getName());
} }
看了“corejava相關(guān)知識(shí)點(diǎn)總結(jié)”的還看了:
1.java培訓(xùn)心得體會(huì)(7篇)
2.java實(shí)習(xí)日記范文3篇
3.java實(shí)結(jié)范文3篇
4.java動(dòng)態(tài)調(diào)用方法
5.java認(rèn)知實(shí)習(xí)心得體會(huì)
