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");

}


分享到:


相關文章: