六、string s = new string("xyz");建立了幾個string object? 二者之間有什麼區別?
嚴格的說應該是乙個或者兩個。
因為如果常量池之前沒有"xyz"這個物件,那麼它首先會在常量池裡面建立乙個"xyz"物件。如果之前常量池就已經有乙個"xyz"物件了,那麼就不會在常量池裡面再建立了,因為常量池裡面的物件不會重複。
而每new string一次,就會在記憶體中建立乙個物件。它是以常量池裡面的物件為模板建立的。
七、try {}裡有乙個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?
1.finally {}一定會執行,只有一種情況下不會執行,即呼叫了system.exit(),終止了虛擬機器程序。
2. finally始終是在跳出方法之前被執行,常用來做一些資源清理工作,所以在return(跳出方法)前執行。
3.比較複雜點的情況是,如果return 後面有乙個表示式,那麼會先執行表示式的內容,但並不會馬上跳出方法,而是執行finally塊,若finally也有return語句,整個方法會從finally的return跳出,若finally中沒有return,則會再從try{}中的return跳出。
八、integer與int的區別
1.int是基本資料型別,直接存數值;integer是int的包裝類。int和integer都可以表示某乙個數值。
2. integer裡面定義了一些靜態轉換方法,用於實現基本資料型別和string之間的轉換。
3. int的預設值為0,而integer的預設值為null,所以integer可以區分出未賦值和值為0的情況,而int則沒辦法區分這種情況。
4. int是基本型別,integer是引用型別,宣告為int的變數不需要例項化,宣告為interger的變數需要例項化
5.integer是比int更高階的資料型別,int一般只用在數值計算中,而integer用在需要使用物件的地方,比如map、set和list集合裡面存放的都是object,需要使用包裝類。
九、sleep()和wait()有什麼區別?
1. sleep是thread類的方法;wait是object的方法。
2.呼叫sleep不會釋放物件鎖;呼叫wait會釋放物件鎖,使得其他執行緒可以使用同步塊或者同步方法。
3.sleep會導致執行緒暫停指定時間,時間一到會自動恢復。而wait需要呼叫notify或者notifyall喚醒。
4.作用範圍不一樣。wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用。
5. sleep必須捕獲異常,而wait,notify和notifyall不需要捕獲異常。
十、啟動乙個執行緒是用run()還是start()?
啟動乙個執行緒是呼叫start()方法,執行緒進入就緒狀態,使執行緒所代表的虛擬處理機處於可執行狀態,這意味著它可以由jvm排程並執行。這並不意味著執行緒就會立即執行。當cpu分配給它時間時,才開始執行run()方法。
若直接呼叫run()方法,只是把該方法執行了一遍,並沒有真正啟動乙個執行緒。
面試題之二
static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區域性變數有什麼區別?static函式與普通的函式有什麼區別?1 全域性變數 外部變數 的書名之前再冠以static就構成了靜態的全域性變數.全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式.這兩者在...
SQL面試題目之二
查詢某員工的領導 select from emp start with mgr 7902 connect by prior mgr empno 以下摘自 url 今天發現在oracle中的select語句可以用start with.connect by prior子句實現遞迴查詢,connect b...
生成器面試題之二
l for i in xrange 10 print ll a for i in xrange 10 a num i print l 輸出結果 python 第一段 解答 以上兩段 的本質區別是第乙個是直接傳物件,第二個是傳物件的引用。第一段 給列表新增,是直接新增字典物件,for迴圈中每次新增的物...