全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
判断下列说法的正误:某类 Tool 中定义了静态方法 show(),该方法体内直接访问了同类中的实例成员变量 name。有人解释说:“show() 是本类自己的方法,用类名 Tool.show() 调用时类已经加载,所以能正常访问 name 并编译通过。”
登录后查看答案
判断:某类中已定义方法 int sum(int[] a, int n)。在同类中再定义 double sum(int[] a, int n),仅将返回值类型由 int 改为 double,参数列表完全相同,则这两个方法构成合法的方法重载,编译可通过。
判断:在 Java 中执行 int[] data = new int[10]; 后,可以使用 data[10] 访问该数组的最后一个元素。
在 Java 中,执行语句 int n = 70000; short s = (short) n; 后,由于强制转换可以绕过编译器检查,该语句能通过编译,但 s 的值可能因精度丢失而不再等于 70000。
判断:小李编写了一个 Java 程序,其中打开了一个文件进行读写。程序结束后,即使他忘记调用方法关闭该文件,JVM 的自动垃圾回收机制也会回收堆中无用的对象,因此该文件占用的外部资源一定会被自动释放,不存在资源泄漏风险。
设类 Shape 中定义了方法 area(),类 Circle 继承 Shape 并重写了 area(),同时 Circle 新增了特有方法 radius()。执行语句 Shape s = new Circle(); 后,编译器依据引用类型 Shape 检查调用合法性,运行时依据对象实际类型 Circle 执行重写后的 area(),即“编译看左边,运行看右边”;但由于 s 的声明类型是 Shape,表达式 s.radius() 无法通过编译,必须先用 instanceof 判断类型后向下转型为 Circle 才能调用 radius()。以上关于该多态场景的表述是否完全正确?
判断题:在 Java 中,子类通过 extends 继承父类时,会同时继承父类的构造方法,因此子类可以直接像调用普通方法一样调用父类的构造方法;此外,一个 Java 类可以同时继承多个父类。
判断下列说法的正误:在 Java 中,静态方法属于类本身,随类加载即存在,因此在静态方法中可以通过类名直接访问同类中的静态成员变量;同理,静态方法中也可以不创建对象而直接访问同类中的非静态成员变量,因为它们同属一个类。
判断下列说法的正误:在 Java 中,若程序员为某个类只编写了一个带参数的构造方法,而未编写无参构造方法,则通过 new 类名() 的形式创建该类对象时将无法通过编译,因为此时系统不会再自动提供默认的无参构造方法。
判断:在 Java 中,将类的成员变量声明为 private 就实现了封装,不需要再提供任何公有的存取(getter/setter)方法。
设方法 f 声明为 static void f(int[] a, int x),某处调用 f(nums, n) 后,nums[0] 被修改为 9,而 n 在方法内被赋值为 20 但调用后仍为原值 5。有同学据此得出两个结论:① nums 作为引用类型传入的是数组引用的副本,方法内通过该副本修改元素对外可见;② 若在方法内执行 a = new int[3],调用后 nums 将指向这个新数组。下列判断正确的是:结论①正确,结论②错误。
判断下列关于 Java 标识符的说法是否正确:在 Java 中,标识符可以由字母、数字、下划线和美元符号组成,且不能以数字开头;由于 goto 在现行 Java 语法中没有实际用途,因此可以将 goto 用作变量名;又因为 Java 区分大小写,所以 Class 与 class 是两个不同的标识符,class 可以作为合法的用户自定义标识符使用。
请判断:在 Java 中,若执行语句 int x = 100; short s = (short) x;,则由于强制转换的存在,该语句一定能通过编译且运行后 s 的值不会发生任何改变。
判断:在 Java 中,_myVar、2ndValue、goto 都可以作为合法的标识符使用。
判断下列表述的正误:某开发者在 Windows 上编译 Java 源程序得到字节码文件,将该字节码文件直接拷贝到 Linux 系统中即可运行,无需在 Linux 上重新编译;但若要让程序在 Linux 上运行,必须安装适用于 Linux 版本的 JVM。这体现了 Java「一次编译、到处运行」的跨平台特性,且说明跨平台的主体是字节码文件,而非 JVM 本身。
判断:Java 实现「一次编译,到处运行」的关键在于,编译生成的字节码是面向 JVM 的中间代码,同一份字节码只需对应平台配有相应版本的 JVM 即可运行,而无需重新编译源程序。
判断:小王准备在自己电脑上对 Java 源程序进行编译和调试,他认为只要安装 JRE 就能满足这一需求,无需安装完整的 JDK。
设有定义 double a[5] = {1.5, 2.5, 3.5, 4.5, 5.5}; 判断:表达式 *(a+2) 与数组元素 a[2] 等价,都表示元素的值 3.5;而 a++ 是非法的,因为数组名 a 是地址常量,不能自增。
判断:在 C 语言中,递归函数只要包含对自己的一次调用,程序就一定能正确运行,不需要设置递归的终止条件。
判断下列说法的正误:设有函数调用语句 f(a);,其中二维数组 a 的定义为 int a[5][6];。若函数 f 的形参写为 int b[][6],则形参与实参完全匹配;但若形参写为 int b[6][],编译仍能通过,因为 C 语言允许省略任一维的大小。