《Java语言程序设计》期末试卷A (精选01)

大学生期末考试复习平台前往平台

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:所有答案均写在答卷上,写在试卷上无效。

(一)单选题(每题 2 分,共 26 分)

(1) 下列语句中,正确的是( )

  • A. float x = 0.0;
  • B. boolean b = 3 > 5;
  • C. char c = "A";
  • D. double π = 3.14;

::::: details 查看答案与解析

答案:B

解析:

  • A 错误:0.0 默认是 double 类型,不能直接赋给 float 变量,应写为 0.0f
  • B 正确:3 > 5 是一个布尔表达式,结果为 false,可以赋给 boolean 变量。
  • C 错误:"A" 是字符串(String),不能赋给 char 变量,应使用单引号 'A'
  • D 错误:虽然 Java 技术上支持 Unicode 字符作为标识符(π 是合法标识符),double π = 3.14; 语法上可以通过编译,但本题考查常规编程规范,且题目要求选出唯一正确答案。从实际编程规范角度,不推荐使用非 ASCII 字符作为标识符,因此 D 不作为最佳答案。

难度: ⭐
考点: #数据类型 #float #boolean #char

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • float 赋值float x = 0.0f;,小数默认是 double,需加 f 后缀。
  • boolean 类型:只有 truefalse,布尔表达式的结果可直接赋值。
  • char 类型:使用单引号 'A',双引号 "A" 是 String 类型。

::: warning 易错点

  • 0.0 是 double 类型,不能直接赋给 float。
    :::
    ::::

:::: details 🔄 举一反三

  1. 下列哪个是合法的 float 类型赋值?
    • A. float f = 1.0;
    • B. float f = 1.0f;
    • C. float f = (float)1.0d;
    • D. B 和 C 都正确
      ::: details 查看练习答案与解析
      答案:D
      解析:A 中 1.0 是 double,不能直接赋给 float。B 使用 f 后缀正确。C 使用强制类型转换也正确。
      :::
      ::::

:::::

(2) 设有定义:int k = 3; 值为 true 的表达式是( )

  • A. k = 3;
  • B. k++ == 3;
  • C. ++k == 3;
  • D. k++ == 3++

::::: details 查看答案与解析

答案:B

解析:

  • A:k = 3 是赋值语句,不是比较表达式,结果为 3(int),不是 boolean。
  • B:k++ == 3,k 先取值 3 与 3 比较(true),然后 k 自增为 4。结果为 true
  • C:++k == 3,k 先自增为 4,再与 3 比较,结果为 false。
  • D:3++ 是非法表达式,常量不能自增。

难度: ⭐
考点: #自增运算 #比较运算符

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 自增运算k++(先用后加),++k(先加后用)。
  • 赋值 vs 比较= 是赋值,== 是比较。

::: warning 易错点

  • k = 3 是赋值不是比较,k == 3 才是比较。
  • 常量不能自增(如 3++ 非法)。
    :::
    ::::

:::: details 🔄 举一反三

  1. 设有 int a = 5;,执行 int b = a++; 后,a 和 b 的值分别是多少?
    ::: details 查看练习答案与解析
    答案:a = 6, b = 5
    解析a++ 先用后加,b 取到 a 的当前值 5,然后 a 自增为 6。
    :::
    ::::

:::::

(3) 能使程序块显示字符串"good"的 x 值的范围是( )

if (x > 0) System.out.println("excellent");
else if (x > -3) System.out.println("good");
else System.out.println("normal");
  • A. x > 0
  • B. x > -3
  • C. x <= -3
  • D. -3 < x <= 0

::::: details 查看答案与解析

答案:D

解析:
程序逻辑分析:

  • x > 0 时,输出 “excellent”。
  • x <= 0x > -3 时,即 -3 < x <= 0,输出 “good”。
  • x <= -3 时,输出 “normal”。

要输出 “good”,需要满足 -3 < x <= 0,故选 D。


难度: ⭐
考点: #条件语句 #if-else

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • if-else if-else 链:从上到下依次判断,第一个满足条件的分支执行后,后续分支不再判断。
  • 区间表示-3 < x <= 0 表示 x 在 (-3, 0] 区间内。

::: warning 易错点

  • 注意 else if 的条件是在前面条件不满足的前提下判断的。
    :::
    ::::

:::: details 🔄 举一反三

  1. 若 x = -5,上述程序输出什么?
    ::: details 查看练习答案与解析
    答案:normal
    解析:x = -5,不满足 x > 0,也不满足 x > -3,执行最后的 else 分支。
    :::
    ::::

:::::

(4) 设有定义:int[] a = {4, 2, -7, 5, 1, 6, 3};a[a[4]] 的值为( )

  • A. 4
  • B. 2
  • C. -7
  • D. 5

::::: details 查看答案与解析

答案:B

解析:
数组 a = {4, 2, -7, 5, 1, 6, 3},索引从 0 开始:

  • a[4] = 1
  • a[a[4]] = a[1] = 2

对应选项 B(值为 2)。


难度: ⭐
考点: #数组 #索引

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 数组索引:从 0 开始,a[i] 表示第 i+1 个元素。
  • 嵌套索引a[a[i]] 先计算内层 a[i] 的值,再作为外层索引。

::: warning 易错点

  • 数组索引从 0 开始,a[4] 是第 5 个元素。
    :::
    ::::

:::: details 🔄 举一反三

  1. 设有 int[] arr = {10, 20, 30, 40, 50};arr[arr[0]/10] 的值是多少?
    ::: details 查看练习答案与解析
    答案:20
    解析arr[0] = 1010/10 = 1arr[1] = 20
    :::
    ::::

:::::

(5) 关于方法的返回值,以下说法正确的是( )

  • A. 方法必须有返回值
  • B. 方法可以没有返回值,也可以有多个返回值
  • C. 方法有且仅有一个返回值
  • D. 方法必须有至少一个返回值

::::: details 查看答案与解析

答案:C

解析:

  • A 错误:方法可以没有返回值(void)。
  • B 错误:方法最多只能有一个返回值,不能有多个。
  • C 正确:方法要么没有返回值(void),要么有且仅有一个返回值。
  • D 错误:void 方法不需要返回值。

难度: ⭐
考点: #方法 #返回值

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 方法返回值:void 方法无返回值,非 void 方法必须有且仅有一个返回值(通过 return 语句)。
  • return 语句:结束方法执行并返回结果。

::: warning 易错点

  • Java 方法不能返回多个值,如需返回多个值,可使用数组或对象封装。
    :::
    ::::

:::: details 🔄 举一反三

  1. 判断:void 方法中可以使用 return; 语句。( )
    ::: details 查看练习答案与解析
    答案:√
    解析:void 方法中可以使用不带返回值的 return; 来提前结束方法。
    :::
    ::::

:::::

(6) 设 Tree 为已定义的类名,下列语句能正确创建 Tree 对象的是( )

  • A. Tree t = new Tree;
  • B. Tree t = new Tree();
  • C. Tree t = Tree();
  • D. Tree t[] = new Tree[10];

::::: details 查看答案与解析

答案:B

解析:

  • A 错误:缺少小括号 ()
  • B 正确:new Tree() 是标准的对象创建语法。
  • C 错误:缺少 new 关键字。
  • D 错误:new Tree[10] 创建的是数组,不是单个对象。

难度: ⭐
考点: #对象创建 #new关键字

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 对象创建语法类名 变量名 = new 类名(参数);
  • new 关键字:在堆内存中分配空间,调用构造方法初始化对象。

::: warning 易错点

  • new Tree[10] 创建的是数组(存放 10 个 Tree 引用的数组),不是 Tree 对象。
    :::
    ::::

:::: details 🔄 举一反三

  1. 判断:String s = new String("hello");String s = "hello"; 效果完全相同。( )
    ::: details 查看练习答案与解析
    答案:×
    解析new String("hello") 在堆中创建新对象,"hello" 使用字符串常量池。两者内存位置不同。
    :::
    ::::

:::::

(7) 在 Applet 的运行过程中,下列什么方法只能执行一次( )

  • A. init()
  • B. start()
  • C. stop()
  • D. paint()

::::: details 查看答案与解析

答案:A

解析:
Applet 生命周期:

  • init():初始化,只执行一次
  • start():启动,每次访问页面时执行。
  • stop():停止,每次离开页面时执行。
  • paint():绘制,可多次调用。

难度: ⭐
考点: #Applet #生命周期

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • Applet 生命周期:init() → start() → paint() → stop() → destroy()。
  • init():只执行一次,用于初始化。
  • paint():每次重绘时调用,可多次执行。

::: warning 易错点

  • init() 只执行一次,start() 和 paint() 可多次执行。
    :::
    ::::

:::: details 🔄 举一反三

  1. 判断:Applet 的 destroy() 方法在浏览器关闭时调用,只执行一次。( )
    ::: details 查看练习答案与解析
    答案:√
    解析:destroy() 在 Applet 被销毁时调用,只执行一次,用于释放资源。
    :::
    ::::

:::::

(8) 指出下列哪个方法与方法 public void change(int x, int y){} 为不合理的重载方法( )

  • A. public long change(long x, long y){}
  • B. public float change(float x, float y){}
  • C. public void change(int x){}
  • D. public int change(int a, int b){}

::::: details 查看答案与解析

答案:D

解析:
方法重载(Overload)要求:方法名相同,参数列表不同(参数个数或类型不同)。

  • A:参数类型为 (long, long),与原方法 (int, int) 不同,是合法重载。
  • B:参数类型为 (float, float),合法重载。
  • C:参数个数为 1 个,合法重载。
  • D:参数类型为 (int, int),与原方法完全相同,仅返回类型不同不构成重载,编译报错。

难度: ⭐
考点: #方法重载

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 方法重载:方法名相同,参数列表不同(类型、个数、顺序),与返回类型无关。
  • 重载判断:只看方法名和参数列表,不看返回类型。

::: warning 易错点

  • 方法重载只看参数列表,返回类型不同不算重载。
    :::
    ::::

:::: details 🔄 举一反三

  1. 判断:void f(int a)int f(int a) 构成方法重载。( )
    ::: details 查看练习答案与解析
    答案:×
    解析:参数列表完全相同,仅返回类型不同,不构成重载,编译报错。
    :::
    ::::

:::::

(9) 为了以字符方式从文件读出内容,可以使用( )类

  • A. FileReader
  • B. FileInputStream
  • C. FileOutputStream
  • D. FileWriter

::::: details 查看答案与解析

答案:A

解析:

  • FileReader:字符输入流,以字符方式读取文件。✓
  • FileInputStream:字节输入流,以字节方式读取。
  • FileOutputStream:字节输出流。
  • FileWriter:字符输出流。

难度: ⭐
考点: #文件IO #字符流 #字节流

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 字符流 vs 字节流:Reader/Writer 是字符流,InputStream/OutputStream 是字节流。
  • FileReader:字符输入流,用于读取文本文件。
  • FileWriter:字符输出流,用于写入文本文件。

::: warning 易错点

  • 读取用 Reader/InputStream,写入用 Writer/OutputStream。
    :::
    ::::

:::: details 🔄 举一反三

  1. 以字节方式写入文件应使用哪个类?
    ::: details 查看练习答案与解析
    答案:FileOutputStream
    解析:FileOutputStream 是字节输出流,用于以字节方式写入文件。
    :::
    ::::

:::::

(10) 以下关于构造方法的描述错误的是( )

  • A. 构造方法的返回类型只能是 void 型
  • B. 构造方法是类的一种特殊方法,它的方法名必须与类名相同
  • C. 构造方法的主要作用是完成对类的对象的初始化工作
  • D. 一个类可以定义多个构造方法

::::: details 查看答案与解析

答案:A

解析:
构造方法没有返回类型,连 void 也不能写。如果写了 void,它就变成了普通方法,不再是构造方法。因此 A 的描述是错误的。


难度: ⭐
考点: #构造方法

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 构造方法:无返回类型,与类同名,用于初始化对象。
  • 构造方法重载:一个类可以定义多个参数列表不同的构造方法。

::: warning 易错点

  • 构造方法没有返回类型,void 也不能写。
    :::
    ::::

:::: details 🔄 举一反三

  1. 判断:如果一个类没有定义任何构造方法,编译器会自动生成一个无参构造方法。( )
    ::: details 查看练习答案与解析
    答案:√
    解析:如果类中没有定义任何构造方法,编译器会自动添加默认的无参构造方法。
    :::
    ::::

:::::

(11) 数学表达式 ∣ x ∣ < 10 |x| < 10 x<10 对应的 Java 表达式为( )

  • A. |x| < 10
  • B. x < 10 && x > -10
  • C. x < 10 || x > -10
  • D. 10 > x > -10

::::: details 查看答案与解析

答案:B

解析:
∣ x ∣ < 10 |x| < 10 x<10 等价于 − 10 < x < 10 -10 < x < 10 10<x<10,即 x > − 10 x > -10 x>10 x < 10 x < 10 x<10

  • A:Java 中没有 || 绝对值运算符。
  • B:x < 10 && x > -10,正确。
  • C:|| 是或,逻辑错误。
  • D:Java 不支持连续比较。

难度: ⭐
考点: #逻辑运算符 #绝对值

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 绝对值不等式 ∣ x ∣ < a |x| < a x<a 等价于 − a < x < a -a < x < a a<x<a
  • 逻辑运算符&&(与)、||(或)、!(非)。
  • Java 不支持连续比较a < b < c 在 Java 中非法。

::: warning 易错点

  • Java 中没有 || 绝对值运算符,需用 Math.abs() 或逻辑表达式。
    :::
    ::::

:::: details 🔄 举一反三

  1. ∣ x ∣ ≥ 5 |x| \geq 5 x5 对应的 Java 表达式是什么?
    ::: details 查看练习答案与解析
    答案x >= 5 || x <= -5Math.abs(x) >= 5
    解析 ∣ x ∣ ≥ 5 |x| \geq 5 x5 等价于 x ≥ 5 x \geq 5 x5 x ≤ − 5 x \leq -5 x5
    :::
    ::::

:::::

(12) 设有整型变量 a, b, c,其中 a, b 的值分别为 10 与 20,在执行语句 c = (a < b) ? a : b; 后,c 的值为( )

  • A. 0
  • B. 1
  • C. 10
  • D. 20

::::: details 查看答案与解析

答案:C

解析:
三元运算符 (条件) ? 值1 : 值2

  • a < b10 < 20 为 true。
  • 返回 a,即 10。
  • 所以 c = 10

难度: ⭐
考点: #三元运算符

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 三元运算符条件 ? 表达式1 : 表达式2,条件为 true 返回表达式1,否则返回表达式2。
  • 等价于if (条件) 变量 = 表达式1; else 变量 = 表达式2;

::: warning 易错点

  • 三元运算符的返回值类型由表达式1和表达式2的类型共同决定。
    :::
    ::::

:::: details 🔄 举一反三

  1. int max = (a > b) ? a : b; 的功能是什么?
    ::: details 查看练习答案与解析
    答案:求 a 和 b 中的最大值并赋给 max。
    解析:如果 a > b,返回 a;否则返回 b。
    :::
    ::::

:::::

(13) ( )定义了一个合法的抽象类

  • A. abstract Shape {abstract void area();}
  • B. class abstract Shape {abstract void area();}
  • C. abstract class Shape {abstract void area();}
  • D. abstract class Shape {abstract void area() {System.out.println("area");}}

::::: details 查看答案与解析

答案:C

解析:

  • A 错误:缺少 class 关键字。
  • B 错误:class abstract 顺序错误,应为 abstract class
  • C 正确:abstract class Shape {abstract void area();} 语法完全正确。
  • D 错误:抽象方法不能有方法体(大括号内的实现)。

难度: ⭐
考点: #抽象类 #抽象方法

:::: details 💡 学习锦囊
📖 相关公式与知识点:

  • 抽象类abstract class 定义,不能被实例化。
  • 抽象方法abstract 修饰,无方法体(没有 {}),以分号结尾。
  • 语法顺序abstract class 类名,不是 class abstract 类名

::: warning 易错点

  • 抽象方法不能有方法体。
  • 抽象类中可以包含非抽象方法。
    :::
    ::::

:::: details 🔄 举一反三

  1. 判断:抽象类中可以包含非抽象方法。( )
    ::: details 查看练习答案与解析
    答案:√
    解析:抽象类中可以同时包含抽象方法(无方法体)和非抽象方法(有方法体)。但含有抽象方法的类必须声明为抽象类。
    :::
    ::::

:::::

更多推荐