全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某系统中已有类 Logger,其中定义了方法 void log(String msg);子类 FileLogger extends Logger 中又定义了方法 int log(String msg)。同学乙认为:两个 log 方法参数列表不同,构成合法重载;同学丙认为:子类重新定义了父类方法,构成合法重写。下列判断正确的是:A. 乙、丙均正确,该方法既是重载也是重写 B. 仅乙正确,这是发生在父子类之间的重载 C. 仅丙正确,返回类型不同不影响重写 D. 乙、丙均不正确,该写法既非重载也非重写,编译报错
登录后查看答案
某 Java 项目声明 `class CatalogFormatException extends ReflectiveOperationException {}`。从 `CatalogFormatException` 开始,逐级写出其父类,直到异常体系根类 `Throwable`:____。
某代码生成器要求候选名称均为合法的 Java 标识符,彼此大小写敏感地区分,并采用以小写字母开头的驼峰命名约定。下列哪一组选项满足全部要求? A. scoreValue 与 ScoreValue B. scoreValue 与 scorevalue C. 3score 与 scoreValue D. goto 与 goTo
已知类 Device 中定义了一个构造方法 Device(String name)(未定义无参构造)。下列关于类 Phone extends Device 的说法,正确的是:A. Phone 自动获得 Device 的无参构造方法,因此 new Phone() 合法 B. Phone 继承了 Device 的构造方法,可直接通过 super 调用无参版本 C. 构造方法不能被继承,Phone 必须在自己的构造方法中用 super(...) 显式调用 Device(String name),否则编译出错 D. Phone 可以定义与 Device 构造方法签名相同的构造方法,相当于重写父类构造方法
某高校实验室的一台电脑上,一个 Java 项目经过完整开发流程后成功运行。已知过程中依次发生了三个事件:① 磁盘上出现了扩展名为 .class 的文件;② 开发者编写并保存了扩展名为 .java 的文件;③ JVM 将某个文件加载并执行。若按程序从源码到运行的正确顺序排列这三个事件,并指出其中被 JVM 直接加载执行的文件的扩展名,则正确的结论是 A. ①②③,JVM 加载的是 .java 文件 B. ②①③,JVM 加载的是 .class 文件 C. ②③①,JVM 加载的是 .class 文件 D. ②①③,JVM 加载的是 .java 文件
有如下程序段: int i, k = 0; for (i = 10; i > 0; i -= 3) { if (i % 4 == 1) continue; k += i; } 执行该程序段后,循环体共被执行____次,变量 k 的值为____。
某 Swing 程序中定义了类 MyHandler 实现了 ActionListener 接口,在初始化代码中执行了 btn.addActionListener(new MyHandler())。程序运行后用户单击按钮 btn,系统随即创建一个 ActionEvent 对象,并回调 MyHandler 中重写的 actionPerformed 方法。从事件监听机制三要素的角度看:事件源是____,事件对象是____,监听器是____(三空均填写题目中出现的类名或变量名)。
在 Java Swing 程序中,某类需要监听文本框获得焦点的事件,即只关心 FocusListener 接口中的 focusGained 方法,而不需要处理 focusLost 方法。若该类直接实现 FocusListener 接口,则须重写接口中全部 2 个方法;若改为继承系统提供的适配器类 FocusAdapter,则只需重写程序实际关心的方法,数量变为 1 个。由此,两种写法必须重写的方法数之差为____,适配器类之所以能减少重写数量,是因为它对接口中的所有方法都提供了____(填:抽象实现 / 空实现)。
某学生编写图形界面程序,需要监听鼠标移动事件,但只关心 MouseMotionListener 接口中的 mouseDragged 方法,不关心 mouseMoved 方法。他声称:由于适配器类(如 MouseMotionAdapter)对接口方法作了空实现,因此继承适配器类后,即使一个方法也不重写,程序编译运行也能正常进行,且拖动事件发生时同样会执行他自定义的处理逻辑。请判断该说法是否正确。
某 JFrame 内容面板采用 BorderLayout。程序依次执行:(1) 将一个使用 GridLayout(2,3)、已放入 6 个按钮的面板 p 添加到内容面板(未指明方位);(2) 再将一个按钮 b 直接添加到该内容面板(也未指明方位)。问最终窗口中部区域显示的是什么? A. 面板 p,其 6 个按钮按 2 行 3 列排列 B. 按钮 b,面板 p 被覆盖而不可见 C. 按钮 b 与面板 p 上下并排显示 D. 中部为空白,因为后加的组件被丢弃
线程 A 已持有对象 obj 的锁,在 synchronized(obj) 块内先调用 Thread.sleep(1000),随后再调用 obj.wait()。则:sleep(1000) 期间锁的持有情况是____(“保持锁”或“释放锁”);obj.wait() 执行后锁的持有情况是____;若另一线程 B 未获得 obj 的锁就直接调用 obj.notify(),将抛出的异常是____。
在 Java 线程生命周期中,线程 t 已处于运行状态,此时它调用了 Thread.sleep(1000),则 t 将进入____状态;当休眠结束、t 再次获得 CPU 时间片执行完毕,其最终进入____状态。sleep() 与 wait() 的关键区别之一是:调用 sleep() 时线程不会释放它已持有的锁,处于阻塞态的时间由____(填“调度器”或“休眠时间”)唯一决定。
Java 中,sleep() 方法属于 ____ 类,wait() 方法属于 Object 类;二者在同步方法中调用时,会释放对象锁的是 ____,而到时间自动恢复、不需其他线程唤醒的是 ____。
线程 P、Q 竞争同一把锁对象 lock。P 先获得锁进入 synchronized(lock) 块,调用 lock.wait() 释放锁进入等待,随后被 Q 调用 lock.notify() 唤醒并重新获得锁继续执行。若 P 在进入同步块后改用 Thread.sleep(1000) 而非 wait(),则关于两个调用的比较,下列说法正确的是: A. 两者都在同步块内调用,因此都会释放 lock 锁,Q 都能立刻获得锁 B. wait() 释放 lock 锁、需 notify() 唤醒;sleep(1000) 不释放锁,Q 在 1 秒内无法进入同步块 C. sleep(1000) 属于 Object 类方法,需其他线程 notify() 才能恢复 D. wait() 不释放锁,sleep(1000) 释放锁,因此后一种情况下 Q 反而能更快进入同步块
某类中有两个同步方法 m1() 和 m2(),均用 synchronized(this) 修饰,且都修改同一共享变量 data。程序运行时创建了该类的两个不同实例 obj1 和 obj2,线程 t1 调用 obj1.m1(),线程 t2 调用 obj2.m2()。请判断:由于 m1() 和 m2() 都带有 synchronized 修饰,t1 与 t2 对 data 的访问必然是互斥安全的。
某类中有共享变量 balance(余额)。线程 t1 与 t2 都调用同一对象的方法 withdraw(),该方法体内使用 synchronized(obj) 同步代码块修改 balance,但 t1 所在类实例持有的锁对象是 obj1,t2 所在类实例持有的锁对象是 obj2,且 obj1 != obj2。判断:即使两个线程访问的是同一份数据 balance,由于二者使用的锁对象不同,同步失效,仍可能出现数据不一致。
小王需要完成两个文件操作任务:任务①,读取一个包含中文的 UTF-8 编码文本笔记文件 notes.txt,并将内容以正确的中文字符显示在控制台;任务②,复制一个压缩包 app.zip,要求复制后的文件与原文件逐字节完全一致。他的方案是:任务①使用 BufferedReader(字符缓冲流)按字符读取并输出,任务②使用 BufferedInputStream 和 BufferedOutputStream(字节缓冲流)进行复制。关于该方案中流的选择,下列说法正确的是 A. 两个任务的流选择都恰当:文本按字符读取可避免多字节中文字符被截断,二进制文件必须按字节复制 B. 任务①恰当,任务②错误,压缩包也应改用字符流复制,因为字符流速度更快 C. 任务①错误,中文文本必须用字节流逐字节读取才能保证不乱码 D. 两个任务都错误,任何文件都应统一使用对象流读写
某程序使用 BufferedOutputStream(缓冲区大小 8192 字节)向文件写入数据:调用 write() 共写入 10000 字节后,立即调用 flush() 方法并随后正常结束程序。若不考虑其他因素,文件中最终能读到的字节数为( )A. 8192 B. 1808 C. 10000 D. 0
小王需要逐个字节复制一个二进制音频文件 music.mp3,并保证文件内容完全不变。下列关于流选择的说法正确的是: A. 应选用字符流,因为字符流读取速度快 B. 应选用字节流,因为字节流不做编码转换,可原样处理任意文件 C. 字节流只能读文本文件,不能读音频文件 D. 必须用字符流逐字符读取,否则中文注释会乱码
判断:某程序用 BufferedOutputStream 向文件写入数据,由于缓冲流会在内存中缓存数据、减少对底层流的读写次数,因此只要使用了缓冲流,即使从未调用 flush() 或 close(),所有数据也一定会完整写入磁盘。