:"Thinking In Java"
:"不错的Java面试参考题目,适用于面试冲刺者"
在Java编程领域,深入理解语言特性和最佳实践至关重要。"Thinking In Java"是一本广泛认可的书籍,它深入探讨了Java的核心概念和技术,是准备Java面试的宝贵资源。以下是一些基于提供的部分内容的关键知识点:
1. **作用域**:
- `public`:可被所有类访问。
- `private`:只能在当前类中访问。
- `protected`:在同一包内的任何类和不同包下的子类中可访问。
- 无修饰符(friendly):在同一包内可访问,不包括其他包。
2. **匿名内部类**:
- 可以实现接口,但不能直接继承类。
- 匿名内部类简化了代码,常用于创建一次性使用的类,尤其在事件监听器和回调中。
3. **Static Nested Class 和 Inner Class**:
- 静态内部类无需外部类实例即可创建,可以访问外部类的静态成员,但不能访问非静态成员。
- 非静态(普通)内部类需要外部类实例,可以访问外部类的所有成员。
4. **位运算符 & 和逻辑运算符 &&**:
- `&` 进行位运算,逐位比较两个操作数。
- `&&` 是逻辑与,只有当两边的操作数都为真时,结果才为真。短路特性,如果左侧为假,右侧不会执行。
5. **Collection 和 Collections**:
- `Collection` 是所有集合框架的顶级接口,包括 List 和 Set。
- `Collections` 是工具类,提供了一系列静态方法用于集合操作,如排序、搜索和同步控制。
6. **assert**:
- 断言用于调试,确保程序的某个条件始终为真。在生产环境中通常关闭,以避免性能影响。
7. **String 对象创建**:
- 创建 `String s = new String("xyz")` 会创建两个对象,一个字符串字面量 "xyz" 在字符串池中,另一个是实例对象。
8. **Math.round()**:
- `Math.round(11.5)` 返回 12,因为 `round()` 方法四舍五入到最近的整数。
- `Math.round(-11.5)` 返回 -11,遵循同样的四舍五入规则。
9. **short 类型的运算**:
- `s1 = s1 + 1` 错误,因为表达式的结果是 `int` 类型,需要显式转换。
- `s1 += 1` 正确,编译器自动处理类型转换。
10. **goto**:
- Java 中没有 `goto` 关键字,这有助于编写更清晰、更易于理解和维护的代码。
11. **length 方法**:
- 数组没有 `length()` 方法,但有 `length` 属性。
- `String` 类有 `length()` 方法,返回字符串的字符数。
12. **Overload 和 Override**:
- **重载(Overload)**:方法名相同,但参数列表不同(数量、类型或顺序)。
- **重写(Override)**:子类方法与父类方法同名、同参数列表,且子类方法访问权限不低于父类方法。
- 重载方法可以改变返回类型,而重写方法不能。
13. **Set 中的元素判断**:
- 使用 `equals()` 方法来判断 Set 中的元素是否重复,而非 `==`。因为 `equals()` 比较的是对象的内容,而 `==` 比较的是对象的引用。
这些知识点涵盖了Java基础、面向对象特性、集合框架、运算符以及异常处理等多个方面,对于Java开发者来说是非常重要的。理解并掌握这些知识点,将有助于提升编程能力和面试表现。