Java面试必备:作用域、匿名内部类、集合与断言解析

5星 · 超过95%的资源 需积分: 10 2 下载量 195 浏览量 更新于2024-07-27 收藏 501KB PDF 举报
"Java面试宝典整理版PDF" 在Java编程语言中,面试时常会涉及到许多核心概念和技术。以下是对给定文件中提及的一些关键知识点的详细解释: 1. **作用域**: Java中的访问修饰符定义了类成员的可见性。`public`允许任何地方的代码访问,`private`限制访问仅限于同一类内,`protected`允许同一包及子类访问,而无修饰符(默认的`friendly`)则只允许同一包内的访问。不写修饰符时,成员默认为包访问权限。 2. **匿名内部类**: 匿名内部类是没有名称的类,它可以实现一个接口或继承一个类。然而,它不能直接继承其他类,但可以实现一个或多个接口。匿名内部类常用于简洁地定义回调函数或事件处理器。 3. **静态内部类与普通内部类**: 内部类(非静态)持有对外部类的隐含引用,可以访问外部类的所有成员,包括私有成员。静态内部类则不持有对外部类的引用,因此可以像普通类一样使用,无需外部类实例就能创建其对象。静态内部类也可以声明静态成员,而普通内部类不能。 4. **& 和 && 的区别**: `&`是位运算符,用于进行按位与操作,处理二进制数据。`&&`是逻辑与运算符,用于判断两个布尔表达式,只有当两个表达式都为真时,结果才为真。在条件判断中,`&&`具有短路特性,即如果第一个表达式为假,不会评估第二个表达式。 5. **Collection 和 Collections**: `Collection`是所有集合接口的顶级接口,包括`Set`和`List`等。`Collections`是一个工具类,提供了大量静态方法来操作集合,如排序、查找、线程安全化等。 6. **assert**: `assert`关键字用于编写断言,用于在开发和测试阶段检查程序的正确性。断言语句在运行时可以被开启或关闭。当断言条件为假时,通常会抛出`AssertionError`,表明程序可能有错误。 7. **String 对象创建**: 在`Strings = new String("xyz");`中,创建了两个`String`对象。一个是常量池中的"xyz"字符串,另一个是通过`new`关键字创建的新对象,指向"xyz"的副本。Java中的`String`对象是不可变的,所以每次创建新的`String`实例,都会创建一个新的对象。 这些知识点是Java面试中常见的问题,理解并掌握它们对于Java开发者来说至关重要,特别是在面试和日常开发中优化代码和排查问题时。