java面試真題分享81-86

081_可序列化對象為什麼要定義serialversionUID值?

答:

SerialVersionUid,簡言之,其目的是序列化對象版本控制,有關各版本反序列化時是否兼容。如果在新版本中這個值修改了,新版本就不兼容舊版本,反序列化時會拋出InvalidClassException異常。如果修改較小,比如僅僅是增加了一個屬性,我們希望向下兼容,老版本的數據都能保留,那就不用修改;如果我們刪除了一個屬性,或者更改了類的繼承關係,必然不兼容舊數據,這時就應該手動更新版本號,即SerialVersionUid。

082_寫一個Java正則,能過濾出html中的 形式中的鏈接地址和標題.

答:

分組1和分組2即為href和value

083_十進制數72轉換成八進制數是多少?

答: 110

084_Java程序中創建新的類對象,使用關鍵字new,回收無用的類對象使用關鍵字free正確麼?

答:

Java程序中創建新的類對象,使用關鍵字new是正確的; 回收無用的類對象使用關鍵字free是錯誤的.

085_Class類的getDeclaredFields()方法與getFields()的區別?

答:

getDeclaredFields(): 可以獲取所有本類自己聲明的方法, 不能獲取繼承的方法

getFields(): 只能獲取所有public聲明的方法, 包括繼承的方法

086_在switch和if-else語句之間進行選取,當控制選擇的條件不僅僅依賴於一個x時,應該使用switch結構;正確麼?

答:不正確。

通常情況下,進行比較判斷的處理,switch 和if-else可以互相轉換來寫;if-else作用的範圍比switch-case作用範圍要大,但是當switch-case和if-else都可以用的情況下,通常推薦使用switch-case。

比如:


switch (ch) {

case 'a':

System.out.println("A");

break;

case 'b':

System.out.println("B");

break;

case 'c':

System.out.println("C");

break;

case 'd':

System.out.println("D");

break;

case 'e':

System.out.println("E");

break;

default:

System.out.println("other");

break;

}

換為if-else

if (ch == 'a') {

System.out.println("A");

} else if (ch == 'b') {

System.out.println('B');

} else if (ch == 'c') {

System.out.println("C");

} else if (ch == 'd') {

System.out.println("D");

} else

if (ch == 'e') {

System.out.println("E");

} else {

System.out.println("Other");

}


分享到:


相關文章: