Java编程语言复习题详解
1. 关键字识别:在Java中,`abstract`是用于定义抽象类的关键字,而`sizeof`、`NULL`和`Native`不是Java的关键字。选项B是正确的。
2. 数据类型与赋值:选项A错误,因为`char`类型只能存储一个字符,不能是字符串;选项B正确,`long l=0xfff;`表示将十六进制数值转换为long类型;选项C错误,`float`后面应该跟小数或F/Floating-point来指定浮点型;选项D正确,`double=0.7E-3;`表示科学计数法,是合法的double赋值。所以,正确的选项是B。
3. String类构造方法理解:题目中的程序创建了五个不同的字符串对象。选项A中`s4`的输出不正确,应该是`strin`,因为`new String(chars,2,6)`从字符数组的第三个元素开始取六个字符;选项B中`s4`正确,但`s5`错误,`new String(sb)`会创建一个新的字符串,与`s3`相同,而不是`s3`的副本。因此,正确答案是C。
4. switch语句的执行:Java中的switch语句如果没有匹配的case,则会执行default块。在这个例子中,变量`i`被初始化为9,没有匹配的case,所以只执行default,输出`default`。选项A正确。
5. 类与对象的特性:在Java中,类`Demo`的实例对象创建时,未初始化的实例变量`count`的默认值是0,所以A选项正确。B选项错误,count的值是确定的。C选项错误,`count`是私有变量,超类对象不能直接访问。D选项错误,Demo的子类也无法直接访问`count`,除非提供公共的getter和setter方法。
6. 类转换与异常处理:尝试将父类引用指向子类对象(向上转型)是可以的,但将父类对象强制转换为子类对象(向下转型)需要确保对象实际是子类类型,否则运行时会抛出`ClassCastException`。在这个例子中,`Base b`不能直接转换为`Sub s`,因此C选项正确,程序会在运行时出现异常。
7. 访问控制修饰符:如果希望任何包中的子类都能访问超类中的成员,应该使用`protected`限定词。
这些题目覆盖了Java的基础知识,包括关键字、数据类型、字符串操作、switch语句的使用、类和对象的特性以及访问控制。理解这些概念对于深入学习Java编程至关重要。