SCJP例题分析--个人总结
SCJP(Sun Certified Programmer for the Java Platform)是Java编程的认证考试,主要考察对Java语言的理解和应用能力。以下是对给定题目中的知识点的详细解释: 1. **参数传递**: - 在Java中,基本类型(如int、float等)作为参数传递时,采用的是值传递,也就是说函数内部对基本类型变量的修改不会影响到函数外部的原始值。 - 对于对象(如Integer是int的封装类),传递的是引用的副本,即地址值的拷贝。这意味着函数内部对对象的修改会影响外部对象的状态。但在案例中,对于Integer b,由于Integer是不可变对象,`b += 1`实际上创建了一个新对象,而原对象不变,因此输出仍为0。 2. **初始化值**: - 基本类型的初始化值分别为:byte、short、char、int、float、double、boolean的默认值分别是0、0、无(未定义的字符)、0、0.0、0.0、false,而String的默认值是null。 - 封装类的默认初始化值为null,因为它们是对象引用,没有初始化时指向null。 3. **Boxer1类的构造器问题**: - 题目中Boxer1类的构造器在第5行尝试对未初始化的Integer i进行操作,这会导致执行时的NullPointerException,因为i在构造器中尚未分配内存,所以答案是D。 4. **类型转换**: - 当进行byte、short、char之间的运算时,结果会自动提升为int类型。 - 示例中的代码`byte temp = b--; temp += b;`是合法的,因为Java会自动处理类型提升。而在`byte temp1 = b+b;`的情况下,需要强制类型转换,如`byte temp1 = (byte)(b+b);`,确保结果在byte范围内的同时进行转换。 5. **方法重载与覆盖**: - **重载(Overloading)**:发生在同一个类中,方法名相同但参数列表不同(参数类型、数量或顺序不同)。例子A、C、D是重载的例子。 - **覆盖(Overriding)**:发生在子类和父类之间,方法名、参数列表和返回类型都必须相同。例子A是正确的覆盖,而B是错误的,因为返回类型不一致,违反了覆盖规则。子类覆盖父类的方法时,访问修饰符不能更低,可以更高,所以子类可以将private改为public,反之则不行。 6. **重写规则**: - 重写方法的访问级别不能低于被重写方法的访问级别。 - 参数列表必须与被重写方法完全匹配。 - 返回类型必须与被重写方法相同,但子类方法可以返回父类方法返回类型的子类。 - 重写方法不能抛出新的或更严重的异常,可以抛出更轻的异常,或者不抛出异常。 这些知识点体现了Java语言的核心特性,包括类型转换、方法调用的细节以及面向对象编程中的重载和覆盖原则。理解并掌握这些概念对于通过SCJP考试和进行Java编程至关重要。
剩余25页未读,继续阅读
- cpcd15x2013-12-23题目虽然不多 但解答很用心很到位,还不错
- 粉丝: 11
- 资源: 181
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助