当前位置: 首页 > news >正文

Java 期末考试题

1. 如果将类 MyClass 声明为 public,它的文件名必须是 (   ) 才能正常编译。

解:① 如果一个类被声明为 public,则必须以 .java 作为文件拓展名。

答案:MyClass.java

2. 定义类头时能使用的修饰符是(  )

A. private                                                      B. static

C. abstract                                                   D. protected

解:

① 普通外部类中可以使用的修饰符:public、abstract不可以使用的修饰符:private、protected、static

private 表示仅自身可见,其他类根本无法引用它;protected 本意为 “自己和子类可用”,而非子类无法看到它;static 表示无主仆,属于类而非实例。

答案:C

3. 阅读下列源文件,并回答问题。

public class Person {void speakHello() {System.out.print("您好,很高兴认识您");System.out.println(" nice to meet you");}
}class Xiti {public static void main(String args[]) {Person zhang = new Person();zhang.speakHello();}
}

(a) 上述源文件的名字是(  )

(b) 编译上述源文件将生成的字节码文件都是(  )

解:核心:

① 源文件名规则判断:当源文件中包含 public class 时,文件名必须与该 public 类名完全一致(包括大小写),在后面加 .java

public class Person { ... } // 公有类

源文件必须为 Person.java

② 字节码文件生成规则:每个独立类生成一个 .class 文件,找到 class 的那段代码,字节码文件为: Person.class、Xiti.class

4. 下列哪个叙述是正确的?​
A. 5.0 / 2 + 10 的结果 double 类数据

B. (int)5.8 + 1.0 的结果是 int 数据

C. ‘苹’ + ‘果’ 的结果是 char 型数据

D. (short)10 + 'a' 的结果是 short 类数据

解:

① 记忆口诀:小算必大,遇双则双。“小算必大”,遇到 short / char 这两个,运算结果必须是 int遇到含 double 的运算,结果必是 double

② 小数不加 f,必是 double。

过程:A项,5.0 是 double 类型,/2 后依然是 double 类型,故 A项 正确;B项,1.0 是 double 类型,遇到含 double 的运算,结果一定是 double,所以 B项 错误;C 项,char 类型会转化为 int 类型,故 C项 错误;D项,short 类型会自动转化为 int 类型,故 D项 错误。

答案:A

5. 下列的哪个赋值语句是不正确的?

A. float d = 3.14f

B. double d = 5.3E12

C. float f = 11.1

D. double f = 11.1E10f

解:

① double 是默认类型:在 Java 中,如果你直接在代码里写一个小数(比如3.14、11.1)或者用科学计数法表示但没有后缀(比如5.3E12),Java 编译器会默认它是一个 double 类型的数值。

② float 需要显示标记:float 类型能表示的小数范围和精度比 double 小。如果你想要告诉编译器某个小数是 float 类型,必须在数字后面加上后缀 f 或 F。

③ 大容器装小东西没问题,反过来不行:Java 允许将 float 值赋值给 double 变量,但是不允许将 double 值直接赋值给 float 变量。

过程:C项,11.1 默认视为 double 类型,而 float 类型是不能直接赋值给 double 的,故本题为 C项

答案:C

6. 说出下列 E类中 【代码1】-【代码2】的输出结果

class Fish{ int weight = 1; }  // Fish类(初始weight=1)class Lake{ Fish fish; void setFish(Fish s){ fish = s; }     // 设置鱼void foodFish(int m){ fish.weight = fish.weight + m; }  // 喂鱼(增加重量)
}public class E {public static void main(String args[]) {Fish redFish = new Fish();System.out.println(redFish.weight);  //【代码1】Lake lake = new Lake();lake.setFish(redFish);               // 将redFish传入Lakelake.foodFish(120);                  // 喂鱼System.out.println(redFish.weight);  //【代码2】}
}

解:将代码一行一行的进行分析:

① 第一段:

class Fish {int weight = 1;  // 定义Fish类,所有Fish对象初始重量为1
}

② 第二段: 

class Lake {Fish fish;  // Lake类有一个"鱼槽"(fish变量),可以存放鱼的引用(初始为空)void setFish(Fish s) {fish = s;  // 🔄 核心操作:把传入的鱼"遥控器"放进鱼槽(不是创建新鱼)}void foodFish(int m) {fish.weight = fish.weight + m;  // 用鱼槽里的遥控器给鱼增重}
}

③ 第三段:

public class E {public static void main(String args[]) {// 🌟 第一步:创建红鱼对象Fish redFish = new Fish();  // 在内存中创建1条鱼(重量=1)// 这时【代码1】输出鱼的当前重量:System.out.println(redFish.weight);  // 输出:1 → (1)1 ✅// 🌟 第二步:创建湖泊Lake lake = new Lake();  // 创建空湖泊(lake.fish为空)// 🔄 核心操作:把红鱼放进湖泊lake.setFish(redFish);  // 相当于把红鱼的"遥控器副本"放进了lake.fish// 现在有两个引用指向同一条鱼://   redFish (你的遥控器)//   lake.fish (湖泊的遥控器)// 🍖 第三步:通过湖泊喂鱼lake.foodFish(120);  // 执行后:鱼.weight = 1 + 120 = 121// 此操作通过lake.fish这个遥控器修改了鱼的实际重量// 🌟 第四步:再次查看你的红鱼System.out.println(redFish.weight);  //【代码2】// 输出:121 → (2)121 ✅// 因为你的redFish遥控器控制的还是同一条鱼}
}

答案:

1

121

7. 下列关于子类的继承的描述中,错误的是(  )

A. 一个子类只允许一个父类

B. 一个父类只能生成一个子类

C. 继承不改变成员权限

D. 私有成员和构造方法不能继承

解:

① Java 是单继承语言,每个子类只能直接继承一个父类,但是一个父类可以有多个子类继承它。

子类无法直接访问父类的私有成员,子类也不会继承父类的构造方法。

答案:B

8. 完成实验 1:

实验1 一个简单的应用程序

一、实验目的

本实验的目的是让学生掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序。

二、实验要求

编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,欢迎学习Java”和“We are students”。

三、程序效果示例

程序运行效果如图1.1所示。

图1.1 简单的应用程序

四、程序模板

请按模板要求,将【代码】替换为Java程序代码。

public class Hello {public static void main(String args[]) {[代码] // 命令行窗口输出“你好,欢迎学习Java”A a = new A();a.fA();}
}class A {void fA() {[代码] // 命令行窗口输出“We are students”}
}

解:

① 如果要使用两个 class 来运行,那么下面的 class A 要改成 public class A,之后运行 Hello.java  的 java.application

② 如果是写成 class A ,那么只用创建一个 class 即可。

http://www.lqws.cn/news/490555.html

相关文章:

  • 阿里云MCP:开启AI应用新时代
  • 突破中文知识处理瓶颈:基于 ChatGLM-6B + LangChain 的本地化智能问答系统实战
  • 什么是Sentinel? 以及优点
  • 云原生 CAD 让制造业设计协同更便捷
  • vue3实现markdown文档转HTML并可更换样式
  • VR看房:房地产数字化转型的核心引擎
  • mysql replace into学习
  • 创惟GL3224|抖胆DD3118完美替代GL3224|国产3.0读卡方案
  • Spark基于Bloom Filter算法的Runtime Filter Join优化机制
  • 用 GitHub Issues 做任务管理和任务 List,简单好用!
  • ADIOS2 介绍与使用指南
  • dify应用实践教程5
  • C++哈希表:高效数据存储与检索的利器
  • 自定义U8G2 中文字体
  • 牛津大学开源视频中的开放世界目标计数!
  • Jupyter-notebook-mcp Quickstart
  • 融合LSTM与自注意力机制的多步光伏功率预测新模型解析
  • SpringBoot多数据源配置详解
  • 《游戏工业级CI/CD实战:Jenkins+Node.js自动化构建与本地网盘部署方案》
  • 设计模式简介
  • 音视频全链路开发实践:基于SmartMediakit的架构设计与应用实战
  • SQLite3 在嵌入式系统中的应用指南
  • (8)(8.1) 光学流量传感器测试和设置(一)
  • 亚矩云手机赋能Vinted矩阵运营:破解二手电商多账号与本地化困局
  • Java面试复习:Java基础、面向对象编程、JVM原理、Spring框架解析
  • Docker单独部署grafana
  • Day40 训练和测试的规范写法
  • AI时代关键词SEO优化
  • Docker 服务无法启动问题
  • 阿里云无影:开启云端办公娱乐新时代