Java练习题:调用方法与变量比较

需积分: 9 1 下载量 139 浏览量 更新于2024-07-22 收藏 326KB DOC 举报
1. Java练习题:题目要求分析代码片段并确定程序执行结果 在这个Java代码段中,首先有一个名为`Strings1`的字符串对象,其初始值为"amit"。接着,代码尝试通过`replace()`方法将`'m'`字符替换为`'r'`,并将结果赋值给`Strings2`。然后,程序比较`Strings2`和`Strings3`(两个相同字符串"arit"`)是否相等,并打印结果。最后,检查两个`SubclassY`对象的引用是否相同。 - 第一行输出:`Strings2`被设置为`"amit".replace('m', 'r')`,这会返回一个新的字符串`"arit"`,所以`System.out.println(s2)`将输出`"arit"`。 - 第二行比较:`Strings2`和`Strings3`是同一个对象,因此`s2 == s3`的结果是`true`。 - 结果:根据以上分析,正确答案是B:`arit`, `amit`, `false`, `true`。 2. 代码片段涉及类继承与成员变量访问: - 首先,`SuperclassX`类有受保护的方法`superclassMethodX()`和一个受保护的变量`superclassVarX`。然后,`SubclassY`类继承自`SuperclassX`,并创建了两个`SubclassY`对象。 - 在`SubclassY`的`subclassMethodY()`方法中: - 第9行试图通过`objY`调用父类`SuperclassX`的受保护方法,由于权限限制,这在Java中是不允许的,会报编译错误。 - 第5行创建子类对象时不会有问题。 - 第11行尝试访问父类`superclassVarX`的值,虽然语法上没有问题,但在实际运行时,如果没有显式提供`superclassVarX`的值,会抛出`NullPointerException`或`IllegalAccessException`,取决于变量是否初始化。 - 主函数中的`m1.equals(m2)`比较的是两个`MyClass`对象,如果它们的构造函数传入相同的参数(100),那么它们的`x`字段值相同,`equals()`方法会返回`true`。这里,由于`m1`和`m2`确实指向相同的对象(因为传入了相同的参数),所以会打印"Both are"。 这个练习题考察了字符串操作、类继承、方法调用权限以及对象比较,涵盖了Java语言的基础知识。