全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
某类实现了两个接口 Flyable 与 Swimmable,两者都定义了默认方法 default String info(),且该类未重写 info()。下列说法正确的是: A. 编译报错,实现类必须重写 info() 以消解冲突 B. 编译通过,运行时随机调用其中一个接口的 info() C. 编译通过,自动调用 Flyable 中的 info() D. 编译通过,自动调用 Swimmable 中的 info()
登录后查看答案
关于 Java 抽象类,下列说法正确的是: A. 抽象类中只能包含抽象方法,不能包含具体方法 B. 抽象类不能定义构造方法 C. 抽象类不能被实例化,但可以定义抽象类的引用指向其子类对象 D. 抽象类必须直接被实例化后才能使用其方法
下列二维数组的定义与初始化语句中,能通过编译且写法完全正确的是: A. int a[2][3] = {1, 2, 3, 4, 5, 6}; B. int a[2][] = {1, 2, 3, 4, 5, 6}; C. int a[3][2] = {{1, 2}, {3, 4}, {5, 6, 7}}; D. int a[2][3] = {{1, 2, 3}, {4, 5, 6, 7}};
某程序声明了 double[] t = new double[12]; 并通过循环为部分元素赋值。若某次执行中循环变量 i 取到了合法范围内的最大值,则此时访问的元素用下标表示为( ) A. t[11] B. t[12] C. t[10] D. t[0]
有如下Java代码片段: int[] arr = {4, 6}; static void test(int[] a, int x) { a = new int[]{1, 1}; x = 50; } 主方法中调用 test(arr, 3) 后,arr[0] 和 x 的值分别是多少? A. 1 和 50 B. 4 和 3 C. 1 和 3 D. 4 和 50
在 Java 中执行语句:int a = -30 / 4; int b = -30 % 4; 则 a 与 b 的值分别为( ) A. a=-7, b=-2 B. a=-8, b=2 C. a=-7, b=2 D. a=-8, b=-2
设有定义 int a[3][4];,且已通过初始化使每个元素均有确定值。下列关于该数组的说法中,正确的是: A. 定义可改写为 int a[][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};,编译无误且行数由初始化确定为3 B. 定义也可改写为 int a[3][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};,编译无误 C. 元素 a[2][3] 是内存中存放的第一个元素 D. 将该数组作实参传递给形参 int b[][] 的函数,编译完全正确
下列关于 Java 创建线程的说法,正确的是( ) A. 继承 Thread 类后,直接调用 run() 方法即可启动一个新线程 B. 实现 Runnable 接口后,必须创建 Thread 对象并调用其 start() 方法才能启动新线程 C. 调用 start() 方法后,新线程立即执行完毕 D. 一个 Runnable 对象不能被多个线程共享
某程序向磁盘文件连续写入 10 万个字节。方案一使用 FileOutputStream 每次 write 一个字节,产生 10 万次底层系统调用;方案二在外层套一层 BufferedOutputStream 后逐字节 write,底层实际磁盘写入次数大幅减少。设缓冲区大小为 8192 字节,若忽略最后一次不满缓冲的部分,方案二的底层磁盘写入次数约为方案一的多少倍?A. 1/8192 倍 B. 1/8191 倍 C. 8192 倍 D. 8191 倍
程序需要读取一个包含中文的文本文件 content.txt,并将其内容原样输出到控制台。下列关于流的选择最合理的是 A. 使用字节流 FileInputStream 逐字节读取并直接输出 B. 使用字符流 FileReader 读取,天然按字符处理,避免中文被截断 C. 必须使用 ObjectOutputStream 读取 D. 字节流和字符流处理文本文件效果完全相同,随意选用
下列关于 Java 泛型作用的说法,正确的是: A. 泛型信息在运行时依然完整保留,可通过反射直接获取并参与运行时类型检查 B. 泛型在编译期约束集合元素类型,避免取出元素时的强制类型转换和运行时类型错误 C. 使用泛型后,可以向集合中添加任意类型对象,由泛型在运行时自动过滤 D. 泛型是语法糖,对编译没有任何约束作用,仅用于提高代码可读性
关于 Java 中 throw 与 throws 的用法,下列说法正确的是: A. throw 用于方法签名后声明可能抛出的异常类型,一次可声明多个 B. throws 用于方法体内手动抛出一个具体的异常对象,后面只能跟一个异常对象 C. throw 用于方法体内手动抛出一个具体异常对象,且抛出后其后的语句默认不再执行;throws 用于方法签名后声明异常类型,可用逗号分隔声明多个 D. throw 与 throws 功能相同,只是书写位置不同,可以互相替换使用
下列关于 Java 异常体系继承结构的说法中,正确的是( ) A. Error 与 Exception 都直接继承自 Object,Throwable 只是 Exception 的父类 B. RuntimeException 及其子类属于非受检异常,编译器不强制对其进行捕获或声明 C. IOException 属于非受检异常,因为它是 Exception 的子类 D. OutOfMemoryError 属于异常,程序中应通过 try-catch 捕获并恢复运行
有如下代码片段: public static int test() { int x = 1; try { return x; } finally { x = 10; } } 调用 test() 的返回值是多少? A. 1 B. 10 C. 0 D. 抛出异常
关于 Java 抽象类,有如下代码与说法: abstract class Shape { String name; Shape(String name) { this.name = name; } abstract double area(); void show() { System.out.println(name + " 已显示"); } } 下列说法正确的是: A. Shape 类含有构造方法,因此可以直接用 new Shape("圆") 创建对象 B. Shape 类中不能定义构造方法,否则编译报错 C. Shape 类可以同时包含抽象方法 area() 和具体方法 show(),但不能被直接实例化,其构造方法仅供子类通过 super 调用 D. 抽象类中的所有方法都必须是抽象方法,show() 的定义非法
下列关于接口的定义与实现,哪一项是正确的? A. 接口中的抽象方法默认修饰为 public abstract,实现类必须实现全部抽象方法,否则该类必须声明为抽象类 B. 接口中的方法默认修饰为 private,实现类可以只实现其中部分方法 C. 接口中定义的常量默认修饰为 private static,实现类可以选择性忽略 D. 一个类实现接口时使用 extends 关键字,且可以同时实现多个接口
设类 A 中定义了私有字段 private int x、公有方法 show() 和构造方法 A()。现有类 B 通过 extends A 继承 A,且 Java 中类只支持单继承。下列关于继承特点的说法正确的是:A. B 继承了字段 x,因此可在 B 的方法中直接写 x 访问它 B. B 继承了构造方法 A(),因此可在 B 中直接调用 A() 创建 A 对象 C. 字段 x 虽被 B 继承,但因私有不能在 B 中直接访问,须通过 A 提供的公有方法间接访问 D. 若让 B 再 extends 另一个类 C,则 B 可同时继承 A 和 C
已知父类 Animal 定义了:protected String describe()、public static String category()、public Object info()。现有子类 Dog 逐一给出三个方法,判断哪些是对父类方法的有效重写:① public String describe()(签名相同,访问权限扩大);② public static String category()(同为静态方法,签名相同);③ public String info()(签名相同,返回值类型为父类返回值 Object 的子类型)。下列判断正确的是:A. 仅①③是重写 B. ①②③都是重写 C. 仅①②是重写 D. 仅②③是重写
关于 Java 中继承的特点与限制,下列说法正确的是: A. 子类可以同时 extends 多个父类 B. 构造方法可以被子类继承并直接调用 C. 父类的 private 成员虽被子类继承,但子类不能直接访问 D. 子类继承父类后,父类中所有成员都可以被子类直接访问
某类 Library 中定义如下成员:static int total = 5; int num = 1; 以及静态方法 static void show(){ }。现尝试在 show() 方法体内直接写 total += 1; 和 num += 1; 两条语句。下列说法正确的是:A. 两条语句均能通过编译,因为静态方法随类加载即存在 B. total += 1; 能通过编译,num += 1; 不能,因为静态方法中缺少对象上下文,不能直接访问非静态成员 C. num += 1; 能通过编译,total += 1; 不能,因为静态成员不能在静态方法中修改 D. 两条语句均不能通过编译,静态方法中禁止访问任何成员变量