自学内容网 自学内容网

每 日练 习

题目

选自牛客网

1.下列外部类定义中,不正确的是:( )

A.class x { … }
B.class x extends y { … }
C.static class x implements y1,y2 { … }
D.public class x extends Applet { … }

正确答案:C 解析:

选项A:class x { .... } 是正确的,这是最基本的类定义形式,没有继承任何类,也没有实现任何接口。

选项B:class x extends y { .... } 也是正确的,这里定义了一个名为x的类,它继承了名为y的类。

选项D:public class x extends Applet { .... }
同样是正确的,这里定义了一个公共类x,它继承了Applet类,这在Java中是合法的,尤其是在创建GUI应用程序时常见。

选项C:static class x implements y1,y2 { .... }
是不正确的,因为在Java中,我们不能使用static关键字来修饰一个类的定义。static关键字只能用于类的方法、变量或者是内部类(即嵌套类),但不能用于顶级类(非嵌套类)。所以,这个选项是错误的。

因此,正确答案是C。


2.java中,用( )关键字定义常量?

A.final
B.#define
C.float
D.const

正确答案:A

final关键字可用于修饰类、变量和方法。final修饰变量时,表示该变量一旦获得了初始值就不可被改变,final既可以修饰成员变量也可以修饰局部变量、形参。
选项B的#define是C和C++中用来定义宏的预处理器指令,不是Java的一部分。

选项C的float是Java中的一个基本数据类型,用来表示单精度浮点数,而不是用来定义常量的关键字。

选项D的const在Java中并不是用来定义常量的关键字。虽然在其他一些编程语言(如C和C++)中,const用于定义常量,但在Java中并没有使用const来定义常量。

因此,正确答案是A。


3.下面代码的输出结果是什么?

public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}
A.3
B.123
C.1
D.12
正确答案:D

这段代码中,main方法尝试执行int i = 100 / 0;,这将导致一个ArithmeticException异常,因为除以零是不允许的。由于ArithmeticExceptionRuntimeException的子类,它会被捕获到catch (Exception e)块中。

catch块中,首先输出数字1,然后抛出一个新的RuntimeException。但是,这个新抛出的异常并不会影响程序的执行流程,因为它是在catch块中抛出的,而catch块之后紧跟着finally块,finally块总是会执行。

finally块中,输出数字2

由于在catch块中抛出了新的RuntimeException,并且没有其他的catch块来捕获这个异常,这个异常会传播到调用栈,导致main方法结束,因此不会执行到finally块之后的System.out.print(3);

所以,这段代码的输出结果是12,即选项D。


4.假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()

boolean isOdd = false;
for(int i=1;i<=2;++i){
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
A.-1
B.-2
C.0
D.1

正确答案:D

解析:

这段代码的作用是计算1和2的交替和,即1-2或者2-1。无论线程1和线程2如何交错执行,最终的结果只可能取决于最后一次循环的i值和isOdd的值。

  • 如果最后一次循环的i是1,那么isOdd将是true,因此a将增加1。
  • 如果最后一次循环的i是2,那么isOdd将是false,因此a将减少2。

由于两个线程都在操作同一个变量a,并且没有同步机制来确保操作的原子性,所以可能会发生竞争条件。但是,即使考虑到并发执行的可能性,最终a的结果也只能是-1、-2或0。

  • 如果线程1先执行,且最后一次循环的i是1,那么a增加1变为1。然后线程2执行,最后一次循环的i是2,a减少2变为-1。
  • 如果线程1先执行,且最后一次循环的i是2,那么a减少2变为-2。然后线程2执行,最后一次循环的i是1,a增加1变为-1。
  • 如果线程1和线程2交替执行,每次循环都交替一次,那么最终a的结果会是0。

因此,最终a的结果不可能是1,因为没有任何情况会导致a增加2或者减少1。所以正确答案是D。

总结

在这里插入图片描述

祝大家每天开开心心,事业有成。


原文地址:https://blog.csdn.net/m0_67187271/article/details/140543964

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!