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");
}
閱讀更多 Java淺析 的文章