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