Java练习题(八)
36.关于抽象类叙述正确的是? (B )
A.抽象类不能实现接口
B.抽象类必须有“abstract class”修饰
C.抽象类必须包含抽象方法
D.抽象类也有类的特性,可以被实例化
37.以下说法错误的是(C)
A.数组是一个对象
B.数组不是一种原生类
C.数组的大小可以任意改变
D.在Java中,数组存储在堆中连续内存空间里
在java中,数组是一个对象, 不是一种原生类,对象所以存放在堆中,又因为数组特性,是连续的,只有C不对
38.以下关于Object类的说法正确的是(A)
A.Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类。 B.Java中的接口(interface)也继承了Object类
C.利用“==”比较两个对象时,Java调用继承自Object的equals方法,判断是否相等。
D.如果类的定义中没有重新定义toString()方法,则该类创建的对象无法使用toStrig()方法。
39.下面代码运行结果是?(A)
public class Test{
static boolean foo(char c){
System.out.print(c);
return true;
}
public static void main( String[] argv ){
int i = 0;
for ( foo('A'); foo('B') && (i < 2); foo('C')){
i++ ;
foo('D');
}
}
}
A.ABDCBDCB
B.ABCDABCD
C.Compilation fails.
D.An exception is thrown at runtime.
执行顺序是条件1->条件2->语句->条件3->条件2->语句->条件3->条件2........ 如果条件2为true,则一直执行。如果条件2位false,则for循环结束
40.以下程序运行的结果为 ( A)
public class Example extends Thread {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
System.out.print("run");
}
public static void main(String[] args) {
Example example = new Example();
example.run();
System.out.print("main");
}
}
A.run main
B.main run
C.main
D.不能确定
此题的争议点只可能是runmain或mainrun,因为Example的run方法里面休眠了100ms,在当今电脑计算性能过剩的时代,如果是多线程启动, main方法肯定会打印出了main。 为啥是runmain而不是mainrun呢? 因为启动线程是调用start方法。 把线程的run方法当普通方法,就直接用实例.run()执行就好了。 没有看到start。所以是普通方法调用。 所以选A。