全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某 JFrame 内容面板采用 BorderLayout。程序依次执行:(1) 将一个使用 GridLayout(2,3)、已放入 6 个按钮的面板 p 添加到内容面板(未指明方位);(2) 再将一个按钮 b 直接添加到该内容面板(也未指明方位)。问最终窗口中部区域显示的是什么? A. 面板 p,其 6 个按钮按 2 行 3 列排列 B. 按钮 b,面板 p 被覆盖而不可见 C. 按钮 b 与面板 p 上下并排显示 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
某程序使用 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)
某系统中定义了方法:static void check(int x) { if (x < 0) throw new IllegalArgumentException("x<0"); } 以及接口声明 void load() throws IOException, SQLException。关于其中 throw 与 throws 的使用,下列说法正确的是:A. throw 位于方法签名之后,可一次声明多个异常类型 B. throws 位于方法体内,其后必须跟 new 创建的异常对象 C. throw 位于方法体内,其后跟一个具体异常对象;throws 位于方法签名之后,可声明多个异常类型 D. check 方法内既用了 throw 也用了 throws,二者作用完全相同
有如下代码: public static int test() { int x = 10; try { return x; } finally { x = 99; } } 调用 test() 的返回值是多少? A. 10 B. 99 C. 0 D. 抛出异常
某支付系统中,「账户」类需提供公共字段(余额、户主)与部分已实现的通用校验逻辑,且各类账户存在共同血统;同时,系统希望让账户、优惠券、积分包等彼此无继承关系的类都支持统一的「可退款」能力契约。关于抽象类与接口的选型,下列说法正确的是: A. 应把「可退款」设计为抽象类,因为抽象类可以实现默认逻辑 B. 应把「账户」设计为接口,因为接口支持多实现更灵活 C. 「账户」用抽象类表达血统与公共实现,「可退款」用接口表达能力契约 D. 两者完全等价,任选其一即可,无需考虑设计语义
设类 A 中定义了 void f(A x){ 输出"A-f(A)" },类 B extends A 中定义了 void f(B x){ 输出"B-f(B)" } 和 void f(A x){ 输出"B-f(A)" }。现执行 A obj = new B(); obj.f(new B()); 关于该调用的绑定方式与输出结果,下列判断正确的是: A. 参数为 B 类型,故编译期静态绑定到 B.f(B),输出 B-f(B) B. obj 编译类型为 A,编译期绑定到 A.f(A),运行期因 B.f(A) 与之构成重写而动态绑定,输出 B-f(A) C. 三个方法互为重载,编译器无法确定调用哪个,产生编译错误 D. 编译期按 obj 的运行类型 B 绑定到 B.f(B),输出 B-f(B)
已知类 Vehicle 中定义了方法 run(),类 ElectricCar 继承 Vehicle 并重写了 run(),同时 ElectricCar 新增了特有方法 charge()。执行如下代码: Vehicle v = new ElectricCar(); v.run(); v.charge(); 下列说法正确的是: A. v.run() 输出 ElectricCar 重写后的版本,v.charge() 编译出错 B. 两行代码均正常运行,输出 ElectricCar 的行为 C. v.run() 编译出错,因为 v 是 Vehicle 类型引用 D. v.charge() 正常运行,因为对象实际是 ElectricCar 类型
下列对方法重写与方法重载的辨析,正确的是: A. 重载要求子类重新定义父类中已有方法,参数列表必须完全相同 B. 重写是在同一个类中定义多个同名方法,靠参数列表区分,编译期即确定调用哪个 C. 重写发生在继承关系中,子类方法与父类方法签名相同,运行期按对象实际类型动态绑定;重载在编译期按参数列表静态绑定 D. 重载与重写都在运行期绑定,区别仅在于是否使用 extends 关键字
某 Java 类中属性 age 已声明为 private,类外代码执行 obj.age = -5; 时编译报错。若删除 private 改为默认访问权限,则该赋值语句可通过编译且 age 变为 -5。下列说法最准确的是: A. 用 private 修饰属性即完成了封装,编译报错已证明封装成功 B. 封装要求私有属性配套提供公有的 setAge(int a) 等存取方法,并在方法内校验数据合法性,仅加 private 而不提供存取方法不算完整封装 C. 只要不提供任何存取方法,私有属性就比提供存取方法更安全,封装程度更高 D. 只要在 setAge 方法中写一句 this.age = a; 不做任何校验,就等同于实现了完整封装
某程序定义了一个 Counter 类,其中有一个成员变量 count(默认值为 0)。main 方法中依次执行:Counter c1 = new Counter(); Counter c2 = c1; Counter c3 = new Counter(); c1.count = 5; c2.count++; c3.count = 2; 请问此时 c1、c2、c3 各自的 count 值分别是多少? A. c1 为 5,c2 为 6,c3 为 2 B. c1 为 6,c2 为 6,c3 为 2 C. c1 为 6,c2 为 6,c3 为 3 D. c1 为 5,c2 为 5,c3 为 2
阅读如下代码: class Student { private String name; private int age; Student() { this("未命名", 18); } Student(String name, int age) { this.name = name; this.age = age; } } 关于代码中两处 this 的用法,下列说法正确的是: A. 第一处 this(...) 可放在 Student() 方法的任意一行 B. 第二处 this.name 中的 this 指代当前正在构造的对象,用于区分同名成员变量与参数 C. this("未命名", 18) 调用的是 Student(String name, int age) 之外的构造方法 D. 两处 this 均可省略而不影响程序含义与结果