第一周Java学习自测题目

一、选择题(每题2分,共16分)

1. 关于Java环境配置,以下描述正确的是?

A) JAVA_HOME指向JDK安装目录下的bin文件夹

B) Path环境变量中添加的是%JAVA_HOME%\lib

C) java命令用于编译Java源文件

D) javac命令用于执行编译后的字节码文件

2. 以下哪个不是Java的基本数据类型?

A) int

B) float

C) String

D) char

3. 关于Scanner类的使用,以下说法错误的是?

A) next()方法读取一个单词(遇到空格停止)

B) nextLine()方法读取整行内容(包括空格)

C) nextInt()后接nextLine()需要额外处理缓冲区

D) nextDouble()可以直接读取整数并转换为double

4. 下列代码的输出结果是?

复制代码
int a = 5;
int b = 2;
double result = a / b;
System.out.println(result);

A) 2.5

B) 2.0

C) 2

D) 编译错误

5. 关于类的封装原则,以下描述正确的是?

A) 所有成员变量都应该声明为public方便访问

B) 使用private修饰成员变量,通过公开方法访问

C) 封装会降低代码的可维护性

D) 封装允许外部直接修改对象的内部状态

6. 关于继承,以下说法正确的是?

A) Java支持多重继承(一个子类可以有多个直接父类)

B) 子类不能访问父类的private成员

C) 构造方法不会被子类继承

D) super关键字用于调用子类的方法

7. 以下关于多态的描述,错误的是?

A) 多态需要满足继承和方法重写两个条件

B) 静态方法也支持多态特性

C) 父类引用指向子类对象是多态的体现

D) 运行时根据实际对象类型调用相应方法

8. 抽象类和接口的主要区别是?

A) 抽象类可以有构造方法,接口不能

B) 一个类可以实现多个接口,只能继承一个抽象类

C) 抽象类可以包含具体方法,接口在JDK8前只能有抽象方法

D) 以上都正确

二、判断题(每题1分,共8分)

1. ( )Java程序的文件名必须与public类名完全一致(包括大小写)。

2. ( )char类型使用双引号表示单个字符,如"A"。

3. ( )Scanner类的nextInt()方法如果接收到非数字输入会抛出InputMismatchException。

4. ( )方法重写要求子类方法的访问权限不能比父类方法更严格。

5. ( )instanceof运算符用于判断对象是否是某个类或其子类的实例。

6. ( )接口中的default方法可以有方法体,并且实现类可以直接使用。

7. ( )枚举类型本质上是类,可以有自己的属性和方法。

8. ( )向下转型(父类转成子类)不需要进行类型检查,可以直接转换。

三、综合性编码任务(60分)

任务:学生成绩管理系统(控制台版)

需求描述:

设计一个学生成绩管理系统,要求使用面向对象思想,体现封装、继承和多态特性。系统包含以下功能:

1. 核心类设计(20分)

  • Person基类:
    • 属性:id(String)、name(String)、age(int)
    • 构造方法:全参构造
    • 方法:displayInfo() 显示基本信息
  • Student类(继承Person):
    • 属性:studentId(String)、major(String)、grades(HashMap<String, Double>,存储课程名和成绩)
    • 构造方法:全参构造(包含父类属性)
    • 方法:
      • addGrade(String courseName, double score):添加/修改成绩
      • removeGrade(String courseName):删除成绩
      • calculateGPA():计算平均分(保留2位小数)
      • displayStudentInfo():显示学生完整信息(包括成绩)
  • Course类:
    • 属性:courseId(String)、courseName(String)、credit(int)
    • 构造方法:全参构造
    • 方法:displayCourseInfo() 显示课程信息

2. 功能实现(25分)

  • 创建至少2个Student对象,3个Course对象

  • 为每个学生添加至少2门课程的成绩

  • 实现菜单系统(控制台交互):

    复制代码
    1. 显示所有学生信息
    2. 添加学生成绩
    3. 删除学生成绩
    4. 计算学生GPA
    5. 退出系统
  • 用户选择菜单选项后执行相应功能

3. 面向对象特性体现(15分)

  • 封装:所有属性私有,通过公开方法访问
  • 继承:Student继承Person,使用super调用父类构造方法
  • 多态:使用Person数组或集合存储Student对象,循环调用displayInfo()方法

验收标准:

  1. 程序能正确编译运行(10分)
  2. 所有类定义完整,符合面向对象原则(15分)
  3. 菜单功能齐全,能正常交互(15分)
  4. 封装、继承、多态特性在代码中有明确体现(15分)
  5. 代码规范,命名合理,注释清晰(5分)

四、参考答案

选择题答案:

  1. A(JAVA_HOME指向JDK安装目录)
  2. C(String是引用类型,不是基本数据类型)
  3. D(nextDouble()读取小数,整数需要带小数点或使用整数输入)
  4. B(2.0,整数相除得整数2,然后转换为double 2.0)
  5. B(封装要求使用private修饰成员变量,通过公开方法访问)
  6. B(子类不能访问父类的private成员)
  7. B(静态方法不支持多态,编译和运行都看左边)
  8. D(以上都正确)

判断题答案:

  1. ×(char使用单引号)
  2. ×(向下转型需要类型检查,否则可能抛出ClassCastException)

编码任务评分要点:

  1. 类结构:Person、Student、Course类定义完整,属性私有(5分)
  2. 继承关系:Student正确继承Person,使用super(5分)
  3. 集合使用:HashMap存储成绩,遍历计算(5分)
  4. 菜单交互:Scanner接收输入,switch处理选项(5分)
  5. 多态体现:Person引用操作Student对象(5分)
  6. 功能完整:所有需求功能实现(10分)
  7. 异常处理:输入验证,空值检查(5分)
  8. 代码质量:格式规范,注释清晰(5分)

总分计算:

  • 选择题:16分
  • 判断题:8分
  • 编码任务:60分
  • 总分:84分

掌握程度评估:

  • 90分以上:优秀掌握
  • 75-89分:良好掌握
  • 60-74分:基本掌握
  • 60分以下:需要加强复习
相关推荐
爱上好庆祝14 小时前
学习js的第三天
前端·css·人工智能·学习·计算机外设·js
前端摸鱼匠14 小时前
【AI大模型春招面试题29】对比学习(Contrastive Learning)在大模型预训练中的应用?
人工智能·学习·算法·面试·大模型·求职招聘
一尘之中14 小时前
星空彼岸:科学、宗教与“超越”的可能
学习·ai写作
三品吉他手会点灯14 小时前
C语言学习笔记 - 16.C编程预备计算机专业知识 - Hello World程序的运行原理
c语言·笔记·学习
happymaker062614 小时前
MyBatis学习日记——day01
学习·mybatis
楼田莉子15 小时前
CMake学习:动态库场景下的应用
c++·后端·学习·软件构建
南境十里·墨染春水15 小时前
linux学习进程 线程同步——读写锁
java·jvm·学习
知识分享小能手15 小时前
R语言入门学习教程,从入门到精通,R语言基础 - 完整知识点与案例代码(1)
开发语言·学习·r语言
lwf00616415 小时前
偏导数学习日记
学习·机器学习
.千余15 小时前
【Linux】开发工具2:vim
linux·服务器·开发语言·学习