OCJP_JDK6考试纠错与题解

5星 · 超过95%的资源 需积分: 9 4 下载量 200 浏览量 更新于2024-07-29 收藏 11.16MB PDF 举报
"这是一份关于OCJP (Oracle Certified Java Programmer) JDK6认证的纠错版练习资源,包含了对原题目的修正和注解,是备考OCJP的重要参考资料。资源中的实践测试模拟了真实的1z0-851考试,旨在帮助考生熟悉考试格式和内容,提高通过率。" 在OCJP (Oracle Certified Java Programmer) JDK6的认证考试中,试题主要考察考生对于Java SE 6编程语言的深入理解和应用能力。以下从提供的部分内容中解析两个关键知识点: **知识点一:泛型与类型安全** 问题1涉及的是将非泛型代码转换为泛型代码以避免未检查警告。在Java中,泛型引入是为了提供更强的类型检查和减少类型转换异常。以下是题目中的代码片段: ```java public static int sum(List list) { // ... for (Iterator iter = list.iterator(); iter.hasNext();) { int i = ((Integer) iter.next()).intValue(); // ... } // ... } ``` 为了使这个方法支持泛型并消除未检查警告,我们可以做出以下改变: A. 删除第14行的强制类型转换:由于我们已经知道`list`是一个`List<Integer>`,因此不需要显式转换。 B. 替换第14行:这不正确,因为`iter.next()`返回的是`Object`,仍需类型转换。 C. 替换第13行:用`for (int i : list)`可以创建一个foreach循环,适用于`List<Integer>`,避免了迭代器的使用和类型转换。 D. 错误,不能直接用`int`作为迭代器的类型。 E. 错误,`sum(List<int> intList)`不是一个有效的Java语法,泛型参数必须是引用类型。 F. 正确,`sum(List<Integer> intList)`将方法声明为接受一个`List<Integer>`,保证了类型安全。 答案:ACF **知识点二:List接口的高效实现** 问题2提到需要一个实现了`add(0, object)`高效方法的`java.util.List`,但并不需要其他支持。`add(0, object)`是在列表的第一个位置插入元素的操作。在Java中,`LinkedList`和`ArrayList`都实现了`List`接口,但它们在插入性能上有所不同: - `ArrayList`基于动态增长的数组实现,`add(0, object)`操作需要移动数组中所有元素的位置,因此效率较低。 - `LinkedList`则使用双向链表实现,`add(0, object)`操作只需修改头节点,因此效率较高。 因此,如果算法特别关注于在列表开头插入元素的效率,那么应该选择`LinkedList`。 这两个知识点突出了Java编程中的泛型使用和数据结构选择的重要性,是OCJP考试中常见的考点。考生需要掌握如何编写类型安全的代码以及如何根据需求选择合适的集合类实现。