全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某开发环境中存在两个文件:Demo.java 和 Demo.class。初学者小张只执行了一条命令:javac Demo.class。关于此后程序的运行流程,下列说法正确的是( ) A. javac 会将 Demo.class 编译生成 Demo.java,再用 JVM 加载 Demo.java 即可运行 B. 该命令无法完成从源码到运行的正常流程,因为 javac 的输入应是扩展名为 .java 的源文件,而非 .class 字节码文件 C. javac 会直接将 Demo.class 交给 JVM 加载执行,程序正常运行 D. 只需再用 java Demo.class 命令,JVM 即可加载执行该字节码文件,与 javac 无关
登录后查看答案
在 Java 中,执行语句 int a = 25 / -6; int b = 25 % -6; 后,a 与 b 的值分别为( ) A. a=-4, b=1 B. a=-5, b=-5 C. a=-4, b=-1 D. a=4, b=1
某同学在学习 Java 开发环境时,将三种安装方案作对比:方案甲安装了完整的 JDK,方案乙只安装了 JRE,方案丙只安装了 JVM。若用「⊇」表示包含关系,则三者之间正确的包含链是( ) A. JDK ⊇ JRE ⊇ JVM B. JVM ⊇ JRE ⊇ JDK C. JRE ⊇ JDK ⊇ JVM D. JDK ⊇ JVM ⊇ JRE
已知接口定义如下:interface Playable { void play(); }。现有四个类声明,逐个判断其能否通过编译:① abstract class Robot implements Playable { };② class Cat implements Playable { public void play() { } };③ class Dog implements Playable { void play() { } };④ class Bird implements Playable { public void sing() { } }。则能通过编译的声明是( ) A. ①② B. ②③ C. ②④ D. ①②④
某系统需要描述「鸟类」这一类对象的公共属性与骨架行为,同时希望为多种不相关的类(如鸟、飞机、超人)统一规定「能飞行」这一能力契约。关于抽象类与接口的选型,下列说法正确的是: A. 鸟类用接口定义,飞行能力用抽象类定义,因为接口表达血统,抽象类表达契约 B. 鸟类用抽象类定义,飞行能力用接口定义,因为抽象类表达是什么的血统,接口表达能做什么的契约 C. 两者都必须用抽象类,因为接口不能被类实现 D. 两者都必须用接口,因为抽象类不能包含成员变量
某系统要求编写一个 Student 类,将成员变量 score 设为 private,并提供 setScore(int s) 方法用于写入。要求:分数必须在 0 到 100 之间,否则拒绝写入并保持原值不变。初始 score 为 60。已知两次调用:第一次 setScore(150)(非法,拒绝),第二次 setScore(95)(合法,写入)。请问从封装设计原则的角度,下面哪个说法是正确的? A. 只需将 score 声明为 private 即算完成封装,setScore 方法可省略 B. setScore(150) 被拒绝说明封装失败,无法保护数据 C. 私有属性配合提供校验逻辑的公有写方法,才能实现真正的封装保护 D. 将 score 声明为 public 并在调用处自行判断合法性同样符合封装原则
某高校选课系统需实现以下三个功能:①打印课表上固定 8 周的每周提醒,循环次数在编码时已确定;②逐条读取学生成绩直到读入哨兵值 -1 结束,循环前无法预知次数;③首次登录时弹出修改密码提示框并要求用户输入,无论是否合规至少弹出一次后按条件决定是否重复。关于三种循环的选择,下列说法正确的是( ) A. ①②③都必须用 do-while 实现 B. ①最适合 for,②最适合 while,③最适合 do-while C. ①最适合 do-while,②③最适合 for D. 三种循环完全不可互换,任何任务只能由唯一一种循环实现
下列 Java 代码片段中,欲用三元运算符将变量 c 赋值为:当 score ≥ 60 时取字符串 "及格",否则取 "不及格"。写法正确的是( ) A. String c = score >= 60 ? "及格" : "不及格"; B. score >= 60 ? String c = "及格" : String c = "不及格"; C. String c = score >= 60 ? "及格"; D. String c = if (score >= 60) "及格" else "不及格";
有如下代码片段: int m = 2, n = 9; boolean r = (m * n > 10) || (++m > 0) && (n-- < 0); 执行后,r 与 m 的值分别是( ) A. true 和 3 B. true 和 2 C. false 和 3 D. false 和 2
某实验课上,甲同学在 Windows 平台用 JDK 编译 Hello.java 得到 Hello.class,随后将 Hello.class 通过 U 盘拷贝到同学的 macOS 和 Ubuntu 电脑上运行。三位同学的电脑均只安装了各自操作系统对应版本的 JRE。关于 Hello.class 能在三种系统上运行的原因,下列说法正确的是: A. Hello.class 中包含三种系统的机器码,因此三台电脑都能识别运行 B. 三台电脑运行的是同一个通用 JVM,JVM 本身跨所有平台 C. Hello.class 是面向 JVM 的字节码,各平台配有对应版本的 JVM 即可运行同一份字节码 D. 编译时甲同学需分别针对 macOS 和 Ubuntu 重新编译生成不同的字节码文件
下列关于 Java「一次编译,到处运行」的说法中,正确的是( ) A. JVM 本身是跨平台的,同一份 JVM 安装包可安装在任何操作系统上运行字节码 B. 跨平台的是字节码文件,不同操作系统需安装各自版本的 JVM 来运行同一份字节码 C. Java 编译器针对不同操作系统生成不同的机器码文件,从而实现跨平台 D. Java 源代码文件可以直接在任何安装了 JVM 的操作系统上运行,无需编译
磁盘上已存在文本文件 note.txt,内容为 HELLO(5 字节)。依次执行以下程序片段(每次 fopen 后均成功返回且随后正确调用 fclose):第一步以 "w" 模式打开并写入字符串 OK;第二步以 "a" 模式打开并写入感叹号 !。两次写入后文件 note.txt 的总字节数为( ) A. 5 B. 2 C. 3 D. 6
设有定义 int a[8] = {0}; int *p = a + 2; 已知 int 类型占 4 个字节,数组 a 的首地址为 2000。若执行语句 p += 3; 后,p 中存放的地址值是( ) A. 2012 B. 2016 C. 2020 D. 2024
有如下程序:void change(int *p,int *q){int *t=p; p=q; q=t;},主调函数中定义 int a=5,b=9; 并调用 change(&a,&b)。调用结束后 a、b 的值依次为多少? A. 9 5 B. 5 9 C. 5 5 D. 9 9
有如下 C 程序: #include <stdio.h> int a = 2; int f(void) { static int s = 4; int a = 8; s += a; return s; } int g(void) { a += 1; return a + f(); } int main(void) { printf("%d", f() + g() + f()); return 0; } 程序运行后的输出结果是 A. 54 B. 63 C. 68 D. 72
有以下程序段:int n; char ch; scanf("%d", &n); scanf("%c", &ch); 运行时从键盘输入 52 后按回车键,则变量 n 和 ch 的取值情况是( ) A. n=52,ch 为回车换行符 B. n=52,ch 保持原有不确定值,scanf("%c") 等待继续输入 C. n=52,ch 为空格字符 D. 两条 scanf 均执行完毕后 n 与 ch 均不确定
设有程序段:int a; char ch; scanf("%d", &a); scanf(" %c", &ch); 运行时从键盘分两行输入:第一行输入 25 后按回车,第二行输入字母 B 后按回车。则变量 a 和 ch 的取值分别是( ) A. a=25,ch 为字符 B B. a=25,ch 为换行符 C. a=25,ch 为空格符 D. a=25,ch 的值不确定
下列任务中,最适宜选用 do-while 循环实现的是( ) A. 输入一个整数并校验格式,格式不合法则反复提示重新输入,直到输入合法为止 B. 遍历数组所有元素并逐个输出 C. 对一个可能为空的集合逐元素处理,集合为空时一次也不执行 D. 计算 1 到 100 的累加和,循环次数已知且固定
有如下代码片段: int a = 5, b = 5, c = 5, d = 5; boolean r1 = (a > 10) && (++a > 0); boolean r2 = (b > 1) || (++b > 0); boolean r3 = (c > 10) & (++c > 0); boolean r4 = (d > 1) | (++d > 0); 执行后,a + b + c + d 的值是多少? A. 20 B. 21 C. 22 D. 23
有如下代码片段: int a = 5, b = 5; boolean r = (a > 6) && (++b > 5); 执行后,r 与 b 的值分别是( ) A. true,6 B. false,6 C. false,5 D. true,5