全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
判断:在 Swing 组件层次结构中,JButton、JLabel 等基本组件直接或间接继承自 JComponent 类,而 JFrame 作为顶层容器不继承 JComponent,它继承自 Container 的子类 Window,因此基本组件不能作为其他组件的父节点来容纳 JFrame。
登录后查看答案
判断:在 Swing 事件监听机制中,事件源、事件对象与监听器三者的协作方式是:监听器向按钮注册自己,按钮被点击后产生的事件对象传递给监听器的动作处理方法;因此触发回调时真正执行动作的是事件源自身,监听器只是被动存储、不会被调用。
判断:在使用 Swing 编写图形界面程序时,只要调用 JFrame 的 add() 方法将 JButton 等基本组件加入窗体,程序运行后这些组件就一定能立即显示出来。
判断题:线程甲持有某对象的锁并在 synchronized 方法内调用了 wait(),甲会立即释放该对象的锁并进入等待状态;而若甲调用的是 Thread.sleep(1000),甲在这 1000 毫秒内仍持有该对象的锁,到时后自动恢复执行。
判断:某学生认为,只要程序最后调用过一次 close() 关闭 BufferedOutputStream,就无需再调用 flush(),因为 close() 会自动刷新缓冲区,缓冲区中尚未写出的尾部数据不会丢失。
判断:使用缓冲输出流(如 BufferedOutputStream)写文件时,数据先存入内存缓冲区,必须调用 flush() 或 close() 方法把缓冲区中残留的数据刷到底层流,否则缓冲区尾部数据可能不会写入文件,造成文件内容不完整。
判断:在 Java 中,若先后向同一个 Map 执行 map.put("apple", 5) 和 map.put("banana", 3),由于 Map 的键不允许重复,第二条 put 操作会执行失败,Map 中不会保存 "banana" 这个键值对。
判断下列说法的正误:在 Java 中,throw 与 throws 可以互换使用,例如方法签名写成 void f() throw IOException 与写成 void f() throws IOException 效果完全相同;而且在方法体内一次 throw 语句可以像 throws 一样同时抛出多个异常对象,如 throw new IOException(), new SQLException(); 是合法写法。
判断:某方法中 try 块执行 return y;(此时 y 已确定为 7)后,即使 finally 块中仅有语句 y = 100;(不含 return),方法最终返回的值仍为 7。
判断:在 Java 异常体系的继承结构中,Error 类型的对象(如内存溢出错误)本质上也继承自 Throwable,因此程序在编写异常处理代码时应当优先捕获并处理 Error,以保证程序的健壮性。
判断:在 Java Swing 中,KeyHandler 类只想响应键盘的按下动作。若该类直接实现 KeyListener 接口,即使不使用 keyPressed 之外的方法,也必须把 keyReleased、keyTyped 一并实现(可为空方法体);而若改为继承 KeyAdapter 类,则只需重写 keyPressed 一个方法即可,其余方法由适配器提供空实现。这是因为适配器类已对监听接口的全部方法做了空实现,从而简化了只关心部分事件的编程。
判断:在 Swing 的组件层次结构中,JFrame 属于顶层容器,可以直接容纳 JButton、JLabel 等基本组件;但由于窗体在创建后默认是不可见的,因此即使已将按钮加入窗体,若未调用 setVisible(true),程序运行后也看不到任何组件。
判断:某 JFrame 的内容面板使用 BorderLayout,若先向其中部(CENTER)加入按钮 b1,之后又向中部加入按钮 b2,则最终界面中部会同时显示 b1 和 b2 两个按钮。
某同学编写了一个 Java 程序:先定义类 MyTask 实现 Runnable 接口并重写 run() 方法,然后创建 MyTask 的实例 t,接着用 new Thread(t) 创建线程对象 th。该同学声称:执行 th.run() 后程序中会出现两个并发执行的线程;而要真正启动新线程,必须改为调用 th.start()。请判断该同学的这一整套说法是否正确。
判断:Java 中,sleep() 是 Thread 类的静态方法,休眠期间不释放已持有的对象锁,到时间后自动恢复;wait() 是 Object 类的方法,须在 synchronized 同步环境中调用,调用时会释放对象锁,且只能由 notify() 或 notifyAll() 唤醒后重新竞争锁才能继续执行。
判断题:Java 中使用泛型声明 ArrayList<String> 后,编译器会在编译期阻止向该列表添加 Integer 等非 String 类型的对象,程序员取元素时也无需再强制转换,从而把可能的类型错误提前到编译阶段暴露;这体现了泛型的主要作用是提供编译期类型约束、避免强制转换并提高类型安全性。
判断:小李需要读取一个纯文本格式的日记文件 diary.txt 并按字符显示其中内容,他选用字符流(如 FileReader)按字符读取,这种流的选择是恰当的。
判断:设有如下代码:Map<String,Integer> score = new HashMap<>(); score.put("Java", 92); score.put("Java", 88); List<String> list = new ArrayList<>(); list.add("Java"); list.add("Java"); 则执行完上述代码后,score 中键 "Java" 对应的值为 92,list 中包含两个 "Java" 元素,这体现了 Map 键唯一(重复存入覆盖旧值)而 List 有序可重复的存取模型差异。
判断:在 Java 中,List 中的元素可以重复且按插入顺序排列,而向 Map 中存入一个已存在的键时,新值会覆盖该键原来对应的旧值,因此同一时刻 Map 中每个键只对应一个值。
判断:在 Java 异常体系继承结构中,Exception 与 Error 是并列关系,均直接继承自 Throwable;由于 Exception 下的 RuntimeException 及其子类属于非受检异常,而其余 Exception 子类(如 IOException)属于受检异常,因此可以说 Throwable 的子类中只有 Exception 分支同时涵盖了受检与非受检两类,而 Error 分支因代表严重的系统级错误(如内存溢出),通常不应作为受检异常被强制捕获处理。上述表述整体正确。