全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某系统中已有类 Logger,其中定义了方法 void log(String msg);子类 FileLogger extends Logger 中又定义了方法 int log(String msg)。同学乙认为:两个 log 方法参数列表不同,构成合法重载;同学丙认为:子类重新定义了父类方法,构成合法重写。下列判断正确的是:A. 乙、丙均正确,该方法既是重载也是重写 B. 仅乙正确,这是发生在父子类之间的重载 C. 仅丙正确,返回类型不同不影响重写 D. 乙、丙均不正确,该写法既非重载也非重写,编译报错
登录后查看答案
某代码生成器要求候选名称均为合法的 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 文件
某 JFrame 内容面板采用 BorderLayout。程序依次执行:(1) 将一个使用 GridLayout(2,3)、已放入 6 个按钮的面板 p 添加到内容面板(未指明方位);(2) 再将一个按钮 b 直接添加到该内容面板(也未指明方位)。问最终窗口中部区域显示的是什么? A. 面板 p,其 6 个按钮按 2 行 3 列排列 B. 按钮 b,面板 p 被覆盖而不可见 C. 按钮 b 与面板 p 上下并排显示 D. 中部为空白,因为后加的组件被丢弃
线程 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 反而能更快进入同步块
小王需要完成两个文件操作任务:任务①,读取一个包含中文的 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. 必须用字符流逐字符读取,否则中文注释会乱码
有如下 Java 代码: List<String> list = new ArrayList<>(); list.add("x"); list.add("y"); list.add("x"); Map<String,Integer> m = new HashMap<>(); for (String s : list) { if (m.containsKey(s)) m.put(s, m.get(s) + 1); else m.put(s, 1); } System.out.println(list.size() + " " + m.size() + " " + m.get("x")); 程序输出结果是( ) A. 3 2 2 B. 3 3 2 C. 2 2 1 D. 3 2 1
在 Java 中执行以下代码: List<String> list = new ArrayList<>(); list.add("x"); list.add("y"); list.add("x"); Map<String,Integer> m = new HashMap<>(); m.put("x", 1); m.put("y", 2); m.put("x", 5); 关于 list 与 m 最终存储结果的描述,正确的是: A. list 中有 3 个元素,m 中有 2 个键值对 B. list 中有 2 个元素,m 中有 3 个键值对 C. list 中有 3 个元素,m 中有 3 个键值对 D. list 中有 2 个元素,m 中有 2 个键值对
阅读以下 Java 方法: public static int get() { int a = 3; try { return a; } finally { a = 99; return a; } } 调用 get() 的返回值是( ) A. 3 B. 99 C. 0 D. 抛出异常
某 Swing 程序中,窗口 JFrame 默认采用边界布局(BorderLayout)。程序执行以下操作:向窗口的 NORTH 区域添加一个面板 p1,p1 采用流式布局(FlowLayout)并依次加入按钮 b1、b2、b3;向窗口的 CENTER 区域添加面板 p2,p2 采用网格布局(GridLayout(2,3))并依次加入按钮 c1 至 c6;随后直接向窗口的 SOUTH 区域先添加按钮 s1,再添加按钮 s2。假设所有按钮尺寸均能正常显示且容器足够大,问窗口最终实际可见的按钮总数是多少? A. 11 B. 10 C. 9 D. 12
线程 T 进入某对象的 synchronized 块后,先调用 obj.wait() 进入等待,随后被其他线程 notify() 唤醒并在同一 synchronized 块内继续执行,接着又调用 Thread.sleep(5000)。关于这两个阶段中 T 所持有锁的状态,下列说法正确的是: A. 调用 wait() 和 sleep() 期间 T 均持有该对象锁 B. 调用 wait() 期间释放该对象锁,调用 sleep() 期间仍持有该对象锁 C. 调用 wait() 期间持有该对象锁,调用 sleep() 期间释放该对象锁 D. 两次调用期间 T 均释放了该对象锁
某方法声明为 synchronized,线程 T 在其中依次执行了两条语句:语句①释放了 T 持有的 this 对象锁,需调用 this.notify() 才能恢复;语句②休眠期间 T 仍紧握 this 锁不放,时间到自动恢复。下列关于语句①、②的判断,正确的是:A. 语句①是 sleep(1000),语句②是 wait() B. 语句①是 wait(),语句②是 sleep(1000),二者均定义于 Thread 类 C. 语句①是 wait(),语句②是 sleep(1000),且 sleep 定义于 Thread 类、wait 定义于 Object 类 D. 二者都释放锁,但仅 wait() 需要通知唤醒
某类中有一个共享变量 count 和两个方法:方法 f1() 用 synchronized(this) 修饰,方法 f2() 的方法体内用 synchronized(new Object()){} 包裹对 count 的修改。现有两个线程 t1 调用 f1(),t2 调用 f2(),同时修改同一对象的 count。关于两线程能否互斥,下列说法正确的是: A. 能互斥,因为两处都使用了 synchronized 关键字 B. 能互斥,因为访问的是同一个共享变量 count C. 不能互斥,因为 t1 的锁对象是 this,t2 的锁对象是新建的 Object 实例,锁对象不同 D. 不能互斥,因为 synchronized 不能修饰实例方法
某程序使用 BufferedOutputStream(缓冲区大小 8192 字节)向文件写入数据,依次调用 write() 写入 20000 字节后调用 flush(),接着再写入 100 字节后程序立即异常终止,未调用 flush() 或 close()。关于最终文件内容与缓冲流的作用,下列说法正确的是:A. 文件完整含有 20100 字节,因为缓冲流会自动定时刷新 B. 文件含 20000 字节,flush() 保证前一段落盘,而最后 100 字节仍留在缓冲区中因未刷新而丢失 C. 文件仅含 8192 字节,因为缓冲区只能容纳这么多数据 D. 文件为空,因为异常终止会清空整个缓冲流已写入的内容
阅读下列 Java 代码片段: public static int calc() { int r = 5; try { return r + 10; } finally { r = r * 3; System.out.print("F" + r + " "); } } // main 中调用:System.out.println(calc()); 则程序完整输出为( ) A. F5 15 B. F15 15 C. F15 45 D. F5 45
某开发组定义方法 void process(List<Object> list),尝试把 ArrayList<String> 传入编译报错;改用泛型方法 <T> void process(List<T> list) 后编译通过。在 process 内部调用 list.add("x") 时,若 T 已被推断为 Integer,则该行编译报错。关于泛型在此体现的作用,下列说法正确的是: A. 泛型在编译期约束元素类型,把类型错误提前到编译阶段暴露,取元素时无需强制转换 B. 泛型信息在运行时完整保留,JVM 依据它对 add 调用做运行时类型拦截 C. 泛型让不同参数类型的 List 在运行时属于不同的类,从而相互隔离 D. 泛型的主要作用是把 ClassCastException 从编译期转移到运行期再抛出
下列关于 Java 中 ArrayList 与 LinkedList 的说法,正确的是: A. ArrayList 只擅长随机访问,任何位置插入都比 LinkedList 慢 B. LinkedList 在任意位置插入元素的时间复杂度都是 O(1) C. ArrayList 尾部追加元素均摊时间复杂度为 O(1),随机访问为 O(1) D. LinkedList 随机访问第 i 个元素的时间复杂度为 O(1)