
一、选择题(每题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()方法
验收标准:
- 程序能正确编译运行(10分)
- 所有类定义完整,符合面向对象原则(15分)
- 菜单功能齐全,能正常交互(15分)
- 封装、继承、多态特性在代码中有明确体现(15分)
- 代码规范,命名合理,注释清晰(5分)
四、参考答案
选择题答案:
- A(JAVA_HOME指向JDK安装目录)
- C(String是引用类型,不是基本数据类型)
- D(nextDouble()读取小数,整数需要带小数点或使用整数输入)
- B(2.0,整数相除得整数2,然后转换为double 2.0)
- B(封装要求使用private修饰成员变量,通过公开方法访问)
- B(子类不能访问父类的private成员)
- B(静态方法不支持多态,编译和运行都看左边)
- D(以上都正确)
判断题答案:
- √
- ×(char使用单引号)
- √
- √
- √
- √
- √
- ×(向下转型需要类型检查,否则可能抛出ClassCastException)
编码任务评分要点:
- 类结构:Person、Student、Course类定义完整,属性私有(5分)
- 继承关系:Student正确继承Person,使用super(5分)
- 集合使用:HashMap存储成绩,遍历计算(5分)
- 菜单交互:Scanner接收输入,switch处理选项(5分)
- 多态体现:Person引用操作Student对象(5分)
- 功能完整:所有需求功能实现(10分)
- 异常处理:输入验证,空值检查(5分)
- 代码质量:格式规范,注释清晰(5分)
总分计算:
- 选择题:16分
- 判断题:8分
- 编码任务:60分
- 总分:84分
掌握程度评估:
- 90分以上:优秀掌握
- 75-89分:良好掌握
- 60-74分:基本掌握
- 60分以下:需要加强复习