Java测试错题题解
博主声明:
本文由博主luoru_LR原创,请多支持与指教。
转载请在开头附加本文链接及作者信息,并标记为转载。
博主主页
假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么? 正确答案:A
public class Base
{
public void methodOne()
{
System.out.print("A");
methodTwo();
}
public void methodTwo()
{
System.out.print("B");
}
}
public class Derived extends Base
{
public void methodOne()
{
super.methodOne();
System.out.print("C");
}
public void methodTwo()
{
super.methodTwo();
System.out.print("D");
}
}
A.ABDC
B.AB
C.ABCD
D.ABC
解析:
这是一道类多态的向上转型题。
Base b = new Derived();
向上转型:父类只能调用父类方法或者子类覆写后的方法,而子类中的单独方法则是无法调用的。
(多选)关于身份证号,以下正确的正则表达式为( ) 正确答案:AC
A.isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
B.isIDCard=/^[1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/;
C.isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
D.isIDCard=/^[1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;
解析:
A选项是15位身份证的正则表达式
C选项是18位身份证的正则表达式
15位身份证的构成:六位出生地区码+六位出身日期码+三位顺序码
18位身份证的构成:六位出生地区码+八位出生日期码+三位顺序码+一位校验码
(多选)以下哪些方法是Object类中的方法 正确答案:ABCD
A.clone()
B.toString()
C.wait()
D.finalize()
解析:API中这四个方法都是Object的方法
(多选)下面关于volatile的功能说法正确的是哪个 正确答案:BC
A.原子性
B.有序性
C.可见性
D.持久性
解析:
synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性
(多选)以下程序执行后,错误的结果是() 正确答案:ABC
public class Test {
private String name = "abc";
public static void main(String[] args) {
Test test = new Test();
Test testB = new Test();
String result = test.equals(testB) + ",";
result += test.name.equals(testB.name) + ",";
result += test.name == testB.name;
System.out.println(result);
}
}
A.true,true,true
B.true,false,false
C.false,true,false
D.false,true,true
解析:
1、首先应该注意到作为成员变量的 name 是使用字面量直接赋值的 ( privateString name
="abc"; ) 这种赋值的执行过程是先看字符串常量池中有没有 value 数组为 ['a', 'b', 'c'] 的 String
对象,如果没有的话就创建一个,有的话