全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某 Swing 程序中定义了类 MyHandler 实现了 ActionListener 接口,在初始化代码中执行了 btn.addActionListener(new MyHandler())。程序运行后用户单击按钮 btn,系统随即创建一个 ActionEvent 对象,并回调 MyHandler 中重写的 actionPerformed 方法。从事件监听机制三要素的角度看:事件源是____,事件对象是____,监听器是____(三空均填写题目中出现的类名或变量名)。
登录后查看答案
在 Java Swing 程序中,某类需要监听文本框获得焦点的事件,即只关心 FocusListener 接口中的 focusGained 方法,而不需要处理 focusLost 方法。若该类直接实现 FocusListener 接口,则须重写接口中全部 2 个方法;若改为继承系统提供的适配器类 FocusAdapter,则只需重写程序实际关心的方法,数量变为 1 个。由此,两种写法必须重写的方法数之差为____,适配器类之所以能减少重写数量,是因为它对接口中的所有方法都提供了____(填:抽象实现 / 空实现)。
某方法需要把 200 个单词依次拼接成一个句子。方案甲使用 String,在循环中执行 sentence = sentence + word;方案乙使用 StringBuilder,先创建初始对象再连续调用 200 次 append。若每执行一次「+」拼接都新建一个 String 对象,StringBuilder 仅在创建时产生 1 个对象、append 不新建对象,则方案甲共新建的 String 对象个数减去方案乙新建的对象个数,差值为 ____。
在 Java 中,Map<String,Integer> map 用于记录每位同学的选课数量。先执行 map.put("张三", 3),再执行 map.put("李四", 2),最后执行 map.put("张三", 5)。此时 map.size() 的值为 ____,map.get("张三") 的返回值为 ____。
有如下代码片段: public static int test() { int r = 0; try { throw new RuntimeException(); } catch (RuntimeException e) { r = 5; return r; } finally { r = 10; } } 调用 test() 的返回值为____。若将 finally 块中语句改为 return r,则返回值变为____。
已知父类 P 仅定义了构造方法 P(String tag){ this.tag = tag; } 和字段 protected String tag = "P",未定义无参构造。子类 S extends P 中定义字段 String tag = "S",其构造方法为:S(){ super("BASE"); },另有一个方法 void show(){ System.out.println(super.tag + ":" + tag); }。执行 new S().show(); 后,程序输出为____。
某 Java 类 Student 中定义了成员变量 int score,并有两个构造方法:Student(int score){ this.score = score; } 和 Student(){ this(80); }。在 main 方法中执行 Student s = new Student(); 后,对象 s 的 score 成员变量的值为____;若将第二个构造方法改为 Student(){ score = 90; this(80); },则该代码能否编译通过(填「能」或「不能」):____。
有如下代码片段:int s = 4, t = 7; boolean r = (s++ > 4) && (++t > 10); 执行后,r、s、t 的值分别为____、____、____。
某类中已有方法 void show(int[] a, int n)。现新增以下四个方法:①int show(int[] a, int n);②void show(double[] a, int n);③void show(int[] a);④void show(int[] b, int m)。其中能与原方法构成方法重载的有____个(填写数字)。
设有程序段:int a; char c; scanf("%d", &a); getchar(); scanf("%c", &c); 运行时从键盘分两行输入:第一行输入 9 后按回车键,第二行输入字母 M 后按回车键。请写出执行完该程序段后,a 的值是____,c 的值是____。
某程序需向磁盘文件写出 80000 条日志记录,每条记录 40 字节。方案甲使用 FileOutputStream 直接逐条 write,每条记录对应 1 次底层写出调用;方案乙在外层套上 BufferedOutputStream(缓冲区大小 8192 字节)后逐条写入,最后调用 flush 并关闭流。方案乙引起的底层写出次数为____次(不足一次写出按一次计),这说明缓冲流的作用是减少____次数,从而提升 I/O 性能;若方案乙最后既未调用 flush 也未调用 close,则缓冲区中尚未落盘的数据将____。
某日志系统需要频繁在序列头部插入新记录,偶尔按下标随机读取记录。若选用 LinkedList(双向链表)存放 n 条记录,向头部插入一条记录的时间复杂度为 O(____);若改用 ArrayList(动态数组),头部插入需整体移动元素,时间复杂度为 O(n),但其按下标随机访问的时间复杂度为 O(____)。综合两种操作的使用频率可知,本场景应选用____(填 ArrayList 或 LinkedList)。
已知父类定义:class Base { protected Number value(int x) { ... } }。某子类继承 Base,分别写出以下 5 个方法声明:① public int value(int x);② protected Number value(int x);③ public Double value(int x);④ private Number value(int x);⑤ public static Number value(int x)。依据方法重写规则(签名相同、返回值类型兼容、访问权限不能更小、静态方法不构成重写),其中能构成对父类 value 方法的重写的共有____个。
某类中已有方法:int sum(int[] a, int x)。现依次新增四个方法:①double sum(int[] a, int x);②int sum(double[] a, int x);③int sum(int[] a, double x);④int sum(int[] a, int x, int y)。其中能与原方法构成合法重载的有____个,因仅有返回值类型不同而无法构成重载的是第____个方法(填序号)。
有如下 Java 代码片段:int[] data = new int[7]; data[2] = data.length - 1; System.out.println(data[data[2]]); 执行到输出语句时,数组 data 的长度为____,data[2] 的值为____,程序输出的结果是____。(第三空若程序运行抛出异常,请填写该异常类名)