根据提供的文件信息,我们可以从中提炼出六个具体的Java知识点,并对其进行详细的解释。 ### 1. 字符串替换与对象引用 **题目**: 编译并运行以下代码的输出结果是? ```java Strings1 = new String("amit"); System.out.println(s1.replace('m', 'r')); System.out.println(s1); Strings3 = "arit"; Strings4 = "arit"; Strings2 = s1.replace('m', 'r'); System.out.println(s2 == s3); System.out.println(s3 == s4); ``` **选项**: A. arit\namit\nfalse\nture B. arit\narit\nfalse\nture C. amit\namit\nfalse\nture D. arit\namit\nture\nture **解析**: - `s1.replace('m', 'r')` 将会把`s1`中的所有`'m'`字符替换成`'r'`,因此`s2`的值将会是`"arit"`。 - `s1`的值没有改变,所以第二行输出`"amit"`。 - `s2`和`s3`的内容相同但它们不是同一个对象,所以`s2 == s3`的结果是`false`。 - `s3`和`s4`的内容相同且由于它们都是字符串常量池中的字符串,因此`s3 == s4`的结果是`true`。 **答案**: **A. arit\namit\nfalse\nture** ### 2. 类继承与访问权限 **题目**: ```java // SuperclassX.java package packageX; public class SuperclassX { protected void superclassMethodX() {} protected int superclassVarX; } // SubclassY.java package packageY; import packageX.*; public class SubclassY extends SuperclassX { SuperclassX objX = new SubclassY(); SubclassY objY = new SubclassY(); void subclassMethodY() { objY.superclassMethodX(); int i; i = objX.superclassVarX; } } ``` **问题**: 哪一行会报错? **解析**: - 第5行不会出现编译错误,因为`SuperclassX`和`SubclassY`处于不同的包中,而`SubclassY`导入了`packageX`。 - 第9行不会出现编译错误,因为`superclassMethodX()`是受保护的方法,可以在子类中被访问。 - 第11行也不会出现编译错误,因为`superclassVarX`是受保护的变量,子类可以访问父类的受保护成员。 **答案**: **以上都不对** ### 3. 构造函数与对象比较 **题目**: ```java class MyClass { int x; MyClass(int i) { x = i; } public static void main(String args[]) { MyClass m1 = new MyClass(100); MyClass m2 = new MyClass(100); if (m1.equals(m2)) { System.out.println("Both are equal"); } else { System.out.println("Both are not equal"); } } } ``` **解析**: - `equals()`方法默认行为是比较两个对象的地址,而不是它们的内容。 - 这里没有重写`equals()`方法,因此`m1.equals(m2)`将返回`false`。 **答案**: 输出**Both are not equal** ### 4. 命令行参数处理 **题目**: 以命令`java Test 1 2 3`运行以下代码时,将发生什么? ```java public class Test { static public void main(String[] args) { int counter = 0; do { System.out.println(args[++counter]); } while (counter < args.length); } } ``` **解析**: - `args`数组包含三个元素`"1"`, `"2"`, 和`"3"`。 - 循环执行时,`args[++counter]`先递增`counter`再取值,因此会跳过第一个参数。 - 因此,输出结果将是`2`和`3`。 **答案**: **代码总是漏掉最后一个传递给程序的参数** ### 5. 方法调用与类型转换 **题目**: ```java class Parent {} class Child extends Parent { public String getChild() { String name = "child"; return name; } public static void main(String argv[]) { Parent p = new Child(); // 插入代码 } } ``` **解析**: - `p`是`Parent`类型的引用,指向`Child`实例。 - 要调用`getChild()`方法,可以通过类型转换来实现。 **答案**: **System.out.println(((Child)p).getChild());** ### 6. 变量输出 **题目**: ```java public class MyClass { public static void main(String argv[]) { int x = 5; // Here } } ``` **解析**: - 目标是输出`5`。 - 使用前缀`++`运算符可以先增加`x`的值再输出。 **答案**: **System.out.println(++x);**
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助