在王道训练营的Java SE阶段测试中,考察了一些基础概念和编程技巧,旨在帮助学员巩固和自我评估学习进度。以下是从题目中提炼出的关键知识点:
1. **Java编译过程**: Java程序经编译后产生的不是机器码(machinecode),也不是动态链接库(DLL),而是字节码(bytecode),这使得Java具有"一次编写,到处运行"(Write Once, Run Anywhere)的特点。选项B是正确的。
2. **表达式运算**: 题目涉及的是算术运算符的优先级和自增/自减操作。表达式 `y+=z--/++x` 先计算 `z--`(先自减再赋值,z变为2),然后 `/` 运算,最后 `++x`(先自增再赋值,x变为2)。所以最终结果是 `2 / 2 + 2 = 1 + 2 = 3`,选A。
3. **数据类型**: `0.6332` 通常表示一个带有小数的数值,Java中浮点数(`float`)和双精度浮点数(`double`)都可以存储这种数据。`double`提供了更大的精度,因此0.6332的数据类型是`double`,选项D正确。
4. **类和构造方法**: 选项A错误,因为Java类中的构造方法可以省略,但如果没有显式提供,系统会自动提供一个默认构造方法。选项B错误,因为构造方法可以与类同名,方法也可以。选项C正确,构造方法在创建对象时自动调用。选项D错误,一个类可以定义多个构造方法,以适应不同的初始化需求。
5. **Java继承特性**: 选项A正确,Java中类仅允许单一继承,即一个类只能有一个直接父类。选项B错误,一个类可以实现多个接口。选项C错误,Java允许一个类同时继承一个类并实现接口。选项D错误,接口不支持继承,只支持多实现。
6. **构造方法**: 构造方法与类名相同,无返回值,且不能直接调用,只能通过`new`关键字实例化对象时隐式调用,选项A正确。
7. **类和继承关系**: 选项B正确,父类的实例范围确实比子类更广,因为它不包含子类特有的成员。选项C错误,子类可以通过`this`关键字调用父类的方法,而不是`super`。选项D错误,Java类只能单继承,不能有多重继承。
8. **异常处理**: 检查型异常(Checked Exception)指的是那些在编译阶段就需要处理的异常,如`ClassNotFoundException`和`IOException`。选项C`FileNotFoundException`是检查型异常,需要在编译时声明处理或捕获,正确答案是C。
9. **输入流类别**: 选项A `BufferedWriter` 是用于输出的,不是输入流;B `FileInputStream` 是面向字节的输入流;C `ObjectInputStream` 是用于反序列化对象的,也是输入流;D `InputStreamReader` 是基于字符的输入流。面向字符的输入流是D。
10. **覆盖父类方法**: 题目给出的代码中,子类 `Sub` 试图覆盖父类 `Super` 的 `getNum()` 方法。根据Java的继承规则,如果子类想要重写父类的方法,方法名、参数列表和返回类型必须完全匹配。因此,选项A会引发编译错误,因为返回值类型从 `float` 改为了 `4.0f`,导致方法签名不同。
这个测试涵盖了Java语言的基础语法、数据类型、构造方法、继承、异常处理和输入流等方面,对于理解和掌握Java SE阶段的学习内容非常关键。