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