一、选择题(每题 2 分,共 30 分)
1. 使用
new 关键字创建对象时,会发生什么?- A. 在栈内存中分配空间
- B. 在堆内存中分配空间并调用构造方法
- C. 仅调用构造方法不分配空间
- D. 创建一个静态变量
2. Java 中,子类继承父类使用哪个关键字?
- A.
implements
- B.
extends
- C.
inherit
- D.
super
3. 关于抽象类,以下说法正确的是?
- A. 抽象类可以被实例化
- B. 抽象方法必须有方法体
- C. 子类必须重写父抽象类的所有抽象方法,否则子类也必须是抽象类
- D. 抽象类不能有构造方法
4.
final 关键字修饰类时,表示?- A. 该类不能被实例化
- B. 该类不能被继承
- C. 该类的对象不能被修改
- D. 该类的方法不能被调用
5. 定义接口使用的关键字是?
- A.
class
- B.
abstract
- C.
interface
- D.
implements
6. 关于
static 修饰的变量,以下说法错误的是?- A. 静态变量属于类,不属于某个对象
- B. 静态变量被该类的所有实例共享
- C. 可以通过
类名.变量名直接访问
- D. 每个对象都有自己独立的静态变量副本
7. 以下选项中,属于 Java 基本数据类型的是?
- A.
String
- B.
int
- C.
Scanner
- D.
Array
8. 以下关于
try-catch-finally 的说法,正确的是?- A.
finally块只有在不抛异常时才执行
- B.
catch块可以捕获所有类型的异常无需指定类型
- C.
finally块无论是否发生异常都会执行
- D.
try块后面必须跟catch不能只有finally
9. 以下代码的输出结果是?
- A. A
- B. B
- C. 编译错误
- D. 无输出
10. Java 中创建线程的正确方式是?
- A. 继承
Thread类,重写run()方法
- B. 继承
Process类,重写execute()方法
- C. 实现
String接口,重写run()方法
- D. 调用线程的
run()方法直接启动新线程
11. 关于
start() 和 run() 方法,正确的是?- A.
start()和run()完全等价
- B.
run()启动新线程,start()在当前线程执行
- C.
start()启动新线程并调用run(),直接调用run()不会启动新线程
- D. 一个线程对象可以多次调用
start()
12. 售票程序中出现"同一张票被卖出多次"的问题,根本原因是?
- A. 线程执行速度太快
- B. 多个线程同时访问共享数据且没有同步保护
- C.
Thread.sleep()导致的
- D. 使用了
Runnable而非Thread
13. 关于
String 类,以下说法正确的是?- A.
String是可变的字符序列
- B. 用
"hello"直接赋值和用new String("hello")创建的字符串,==比较一定为 true
- C.
String是final类,不能被继承
- D.
String的replace()方法会修改原字符串
14. 以下代码的输出结果是?
- A.
truetrue
- B.
falsetrue
- C.
truefalse
- D.
falsefalse
15. 以下哪个方法用于获取字符串的长度?
- A.
size()
- B.
length()
- C.
getSize()
- D.
capacity()
二、填空题(每空 2 分,共 30 分)
1. 使用
______ 关键字修饰的变量属于类级别,被所有实例共享(如 _static.nation);与之相对,不用该关键字修饰的变量属于 ______ 变量,每个对象独立拥有。2. 使用
______ 关键字修饰的类为抽象类;抽象类中的抽象方法使用 ______ 关键字修饰,且没有方法体。3. Java 中从键盘读取用户输入,通常使用
______ 类;调用其 ______ 方法读取一行字符串。4. 接口中的方法默认为
public abstract,实现接口使用 ______ 关键字。5. Java 异常处理使用
______ 包裹可能出错的代码,用 ______ 捕获并处理指定类型的异常,用 ______ 执行无论是否出错都必须运行的代码。6. 创建线程有两种基本方式:继承
______ 类,或实现 ______ 接口。推荐使用后者,因为可以避免单继承的限制。7. 使用
______ 关键字可以给代码块或方法加锁,解决多线程访问共享数据的安全问题。8. 比较两个字符串的内容是否相等,应使用
______ 方法;获取字符串长度使用 ______ 方法。三、简答题(每题 10 分,共 40 分)
1. 什么是抽象类(abstract class)?它和普通类有什么区别?请结合课堂上的
Person 类和 Student 类举例说明抽象类的定义方式、抽象方法的实现,以及为什么抽象类不能被实例化。2. 简述 Java 的
try-catch-finally 执行流程,并说明 Error 和 Exception 的区别。3. 请说明 Java 多线程的两种创建方式(继承 Thread 和实现 Runnable),并解释为什么多个线程操作共享数据时需要使用
synchronized 同步。4. 请解释
String 的不可变性(immutability)是什么,以及 == 和 equals() 在比较字符串时的区别。