第31章测试

Java final关键字 - 测试你的掌握程度

建议用时:15分钟 | 题目数量:10题 | 满分:100分

1
选择题
关于final关键字的描述,以下哪个是正确的?

解析

正确答案是C。final修饰的变量只能赋值一次,一旦初始化后就不能再修改,这是final关键字的核心特性之一。

2
选择题
以下哪个Java内置类是final类?

解析

正确答案是B。String类是final类,不能被继承。这样设计是为了安全性、性能优化和字符串池的实现。

3
代码题
以下代码的输出结果是什么?
public class Test { public static final int VALUE = 10; public static void main(String[] args) { final int x; if (VALUE > 5) { x = 20; } else { x = 30; } System.out.println(x); } }

解析

正确答案是C。final局部变量可以延迟初始化,但只能赋值一次。由于VALUE=10>5,所以x被赋值为20。

4
判断题
final修饰的方法不能被子类重写,但可以被重载。

解析

正确答案是A。final方法不能被重写(override),但可以被重载(overload)。重写是子类覆盖父类方法,重载是同一个类中方法名相同但参数不同。

5
代码题
以下代码中,哪一行会导致编译错误?
final class FinalClass { public void method() { System.out.println("Final class method"); } } class SubClass extends FinalClass { // 第7行 @Override public void method() { // 第9行 System.out.println("Sub class method"); } }

解析

正确答案是A。第7行会导致编译错误,因为final类不能被继承。一旦类被声明为final,就不能有子类。

6
选择题
关于final变量的初始化,以下哪个说法是错误的?

解析

正确答案是C。final局部变量不需要在声明时立即初始化,可以延迟初始化,但必须在使用前初始化且只能赋值一次。

7
代码题
以下代码的运行结果是什么?
public class Test { public static void main(String[] args) { final StringBuilder sb = new StringBuilder("Hello"); sb.append(" World"); System.out.println(sb.toString()); } }

解析

正确答案是C。final修饰的引用变量不能重新赋值,但可以修改对象的内容。StringBuilder对象的内容可以被修改。

8
选择题
使用final关键字的主要好处不包括以下哪一项?

解析

正确答案是D。final关键字的作用是限制修改,这会降低而不是增加代码的灵活性。final的好处包括安全性、性能优化和线程安全。

9
判断题
final修饰的数组,数组的元素值可以被修改。

解析

正确答案是A。final修饰的数组引用不能改变,但数组的元素值可以被修改。final只是限制引用的重新赋值,不限制对象内容的修改。

10
选择题
在设计不可变类时,以下哪个做法是不必要的?

解析

正确答案是D。如果类已经声明为final,就不能被继承,因此不需要将所有方法都声明为final。这样做是多余的。

测试结果

0/10

查看上方题目的详细解析,加深对Java final关键字的理解。