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淺析 的文章