2024-2025学年上学期期末
2024-2025学年上学期期末试卷(含答案)
说明
- 在2025-2026学年上学期,据cly老师说,这份卷子是去年的期末考卷,供同学们练习。
一、判断题(15 题,每题 1 分,共 15 分)
-
类的成员变量如果未显式初始化,则会自动被初始化为其类型的默认值。
答案:
T
-
Java 中,由低精度的数据类型向高精度的数据类型赋值时,是自动类型转换,其数值不变。
答案:
T
-
Java 语言,一个源文件中可以定义多个
public类。答案:
F
-
Java 数组创建时,一个数组可以存放不同类型的数值。
答案:
T
-
如果 Java 源文件中包含了多个类,那么用编译器
javac编译完源文件后,将生成多个扩展名为.class的文件。答案:
T
-
语句
System.out.println(6+8+"Hello,world!");的输出结果是68Hello,world!。答案:
F
-
Java 中不允许同时继承一个类并实现多个接口。
答案:
F
-
定义抽象类时,抽象类中的方法必须全部是抽象方法。
答案:
F
-
Java 中,
static修饰的变量,说明在类的所有实例之间是共享的。答案:
T
-
Java 的标准输入对象是
System.in,标准输出对象有两个,分别是System.out和System.err。答案:
T
-
Java 中声明构造方法时,有时也可以使用
static修饰。答案:
N
-
final用于修饰类的方法时,表示该方法无法被子类重写。答案:
T
-
Java 中,由 Java 编译器自动导入,
java.lang是无需在程序中用import导入的包。答案:
T
-
实例变量只能通过对象名访问,类变量既可以通过某个对象名也可以通过类名来访问。
答案:
T
-
Java 中的
File类,可以用于读取文件的内容。答案:
F
二、单项选择题(10 题,每题 2 分,共 30 分)
-
以下哪个不是 Java 的异常关键字?
A.
try
B.catch
C.raise
D.throw答案:
C
-
下列关于 Java 中的构造方法,说法错误的是( )。
A. 构造方法没有返回值。
B. 构造方法主要是完成针对对象的初始化工作。
C. 构造方法是类的一种特殊方法,它的方法名必须与类名相同。
D. 如果类没有无参的构造方法,编译器会自动配置一个。答案:
D
-
以下说法不正确的是( )。
A. 类的普通成员不需要初始化就有默认值。
B. 类的静态成员不需要初始化就有默认值。
C.int[] a = new int[5],每个元素都是0。
D.String[] a = new String[5],每个元素都是""。答案:
D
-
以下关于继承的说法正确的是( )。
A. 在 Java 中一个类最多同时继承一个类和实现一个接口。
B. 在 Java 中的接口可以同时继承多个接口。
C. 子类只能继承父类的public方法和属性。
D. 子类只能继承父类的方法,而不能继承属性。答案:
B
-
Java 是一种( )编程语言。
A. 解释型、弱类型
B. 解释型、强类型
C. 编译型、弱类型
D. 编译型、强类型答案:
D
-
Java 语言中,下列哪个关键字修饰常量( )。
A.
constant
B.static
C.final
D.final static答案:
D
-
以下表述中哪一句话是正确的。
A. Java 的源代码放置于
.java文件中,一个.java文件最多仅能存放一个类。
B. Java 源代码中的类名称必须和.java文件的名称相同。
C. 类所在的包名和目录层次必须相同。
D. 类名称与.java文件名称并无任何关联。答案:
C
-
以下表述中哪一句话是不正确的。
A.
super指向父类。
B.self指向本类。
C.static变量是依赖于类存在,不依赖于对象实例。
D. Java 变量需要先定义才能使用。答案:
B
-
以下表述中哪一句话是不正确的。
A.
final方法无法被改写。
B.final类不能被继承。
C.final int变量不能修改其值。
D.final StringBuffer变量不能修改其值。答案:
D
-
以下哪个对象是可变对象。
A.
int a = 5;
B.Integer a = 5;
C.String a = "abc";
D.StringBuffer sb = new StringBuffer("abc");答案:
D
三、简答题(每题 5 分,共 10 分)
-
请简述 Java 程序从编写到编译,再到运行的全过程,列出中间的使用的命令。
答案:
使用文本编辑器(如 Notepad++、Text 等)编写 Java 源代码,保存为
.java扩展名的文件。使用 Java 编译器javac将源代码编译成字节码文件(.class文件)。Java 命令java运行编译后的字节码文件。注意包package的使用。
-
请说明
final关键字的作用。答案:
final关键字是一个修饰符,用于指定一个变量、方法或类不能被进一步修改或扩展。当应用于局部变量或实例变量时,final表示该变量一旦被初始化后,其引用或值就不能被改变。当一个方法被声明为final,则该方法不能在任何子类中被重写(override)。当一个类被声明为final,则该类不能被继承。
四、程序分析题(每题 6 分,共 30 分)
-
写出以下程序执行之后的结果。
public class TestStr {public static void main(String[] args) {String str1 = "hello";String str2 = "hello";String str3 = "he" + "llo";String str4 = new String("hello");System.out.println(str1 == str2);System.out.println(str1 == str3);System.out.println(str1 == str4);System.out.println(str2 == str3);System.out.println(str2 == str4);System.out.println(str3 == str4);}}答案:
题目变更:把第 5 个小问题的一个等号,变更为 2 个等号。
输出为:
truetruefalsetruefalsefalse每个 1 分。
如果题目没有变更,那么输出是:
truetruefalseThellofalse也是每个 1 分。
-
请阅读以下程序。如果程序有错误,请列出错误,并纠正使得通过编译。如果没有,直接写出结果。
(01) interface A {(02) void m1();(03) }(04) interface B implements A {(05) void m2();(06) }(07) public class MyClass implements B {(08) public void m1()(09) {(10) System.out.println("111111");(11) }(12) public static void main(String[] args) {(13) new MyClass().m1();(14) }(15) }答案:
每个 3 分:
- 第 04 行:
implements应改为extends。 - 第 05 行:
m2()缺实现。
- 第 04 行:
-
请阅读以下程序。如果程序有错误,请列出错误,并纠正使得通过编译。如果没有,直接写出结果。
(01) public class MyException {(02) public MyException() { }(03) public MyException(String s) { super(s); }(04) }(05) public class Test {(06) public void f(int n) throw MyException {(07) if (n > 0) throws new MyException("error");(08) else return null;(09) }(10) public static void main(String args[]) {(11) Test t = new Test();(12) t.f();(13) }(14) }答案:
- 第 01 行没有
extends Exception,2 分。 - 第 06 行应为
throws,1 分。 - 第 07 行应为
throw,1 分。 - 缺
try catch语句,1 分。 - 第 12 行
t.f()需要改成t.f(5),只要补充一个整数即得分,1 分。
- 第 01 行没有
-
请阅读以下程序,并给出结果。
class A {public void func1() {System.out.println("A func1 is calling");}public void func2() {func1();}}class B extends A {public void func1() {System.out.println("B func1 is calling");}public void func3() {System.out.println("B func3 is calling");}}class C {public static void main(String[] args) {A a = new B();callA(a);callA(new B());}public static void callA(A a) {a.func1();a.func2();}}答案:
每个 1.5 分:
B func1 is callingB func1 is callingB func1 is callingB func1 is calling
-
请阅读以下程序。如果程序有错误,请列出错误,并纠正给出运行结果。如果没有,直接写出结果。
(01) class Parent {(02) String a;(03) public void Parent(String a) {(04) this.a = a;(05) }(06) public void print() {(07) System.out.println(a);(08) }(09) }(10)(11) public class Child extends Parent {(12) String b;(13) public Child(String a, String b) {(14) this.b = b;(15) super(a);(16) }(17) public void print() {(18) System.out.println(a + " to " + b);(19) }(20) public static void main(String arg[]) {(21) Parent p = new Child("east", "west");(22) p.print();(23) }(24) }答案:
- 第 03 行没有
void,此外Parent类却默认构造函数,2 分。 super必须在构造函数第一行,2 分。
修改后,输出为,2 分:
east to west - 第 03 行没有
五、编程题(25 分,第一题 10 分,第二题 15 分)
-
接受用户输入的邮箱字符串,需要编写一个方法,用于验证输入的字符串是否符合有效的电子邮件邮箱格式要求(例如,首字母为大写字母,包含
@符号,@后必须有.)。评分标准:
- 正确接收用户输入的邮箱字符串,有合理提示,3 分。
- 格式验证规则实现,6 分,如首字母为大写,包含
@符号,@后必须有.。 - 逻辑完整与输出格式,1 分。
-
模拟一个宠物管理,每个宠物有编号、名字、种类、年龄、以及健康状况,宠物类型如猫、狗,需要提供可以添加宠物、显示所有宠物信息的功能,基类是
Animal,从文件pet.txt读入宠物信息,若添加重复的宠物,给出异常处理和用户提示。评分标准:
- 类设计与继承关系,5 分。
- 文件读取,异常处理,5 分。
- 添加宠物与显示宠物方法实现,5 分。