Java面试必备知识点:作用域、匿名内部类与集合

4星 · 超过85%的资源 需积分: 9 16 下载量 11 浏览量 更新于2024-07-28 收藏 203KB DOC 举报
"Java面试宝典2012版" 在Java编程语言中,面试常常涉及到对基础概念、语法特性和最佳实践的深入理解。以下是一些关键知识点的详细说明: 1. **作用域public,private,protected,以及不写时的区别** - `public`: 公共访问修饰符,任何地方都能访问。 - `private`: 私有访问修饰符,只能在声明它的类内部访问。 - `protected`: 保护访问修饰符,可以在同一包内的任何类、子类或不同包的子类中访问。 - `friendly` (或`default`): 默认访问修饰符,只在同包内可访问。 - 不写时,默认为`friendly`,即同包内可见。 2. **匿名内部类(Anonymous Inner Class)** - 匿名内部类没有名称,常用于实现接口或继承类,但只能作为局部变量或者参数使用。 - 它不能直接继承其他类,但可以实现一个或多个接口。 - 在单次使用的情况下,匿名内部类可以简化代码,避免定义额外的类。 3. **StaticNestedClass和InnerClass的区别** - 内部类(Inner Class)可以直接访问外部类的成员,包括私有成员,因为它持有对外部类实例的隐含引用。 - 静态内部类(Static Nested Class)则没有这样的引用,因此它不能直接访问外部类的非静态成员,除非通过实例化外部类对象来访问。 - 创建静态内部类的对象不需要外部类对象的实例,而普通内部类需要。 4. **&和&&的区别** - `&` 是位运算符,用于按位与操作,适用于整型或布尔型数据,它不管两边的操作数,总是进行计算。 - `&&` 是逻辑与运算符,只有当第一个操作数为真时,才会评估第二个操作数。在短路逻辑中,这有助于提高效率。 5. **Collection和Collections的区别** - `Collection` 是所有集合类的父接口,如Set和List。 - `Collections` 是一个工具类,提供了许多静态方法,用于操作集合,例如排序、查找、复制和线程安全化。 6. **assert关键字的使用** - `assert` 用于在开发和测试阶段插入断言,以确保程序的关键条件得到满足。 - 当`assert`后的表达式为`false`时,系统会抛出`AssertionError`,帮助开发者定位问题。 - 在生产环境中,通常通过设置`-ea`或`-enableassertions`标志启用断言,而在默认情况下,断言是关闭的,以提高运行时性能。 7. **String对象的创建** - `Strings = new String("xyz");` 这行代码创建了两个`String`对象。首先,字符串字面量"xyz"创建了一个`String`对象,然后`new String("xyz")`创建了另一个与之相等的新`String`对象,因为Java中的`String`是不可变的。 这些知识点在Java面试中经常被问到,掌握它们对于理解和编写高质量的Java代码至关重要。同时,面试者还需要了解异常处理、多线程、IO流、设计模式、JVM内存模型以及最新的Java特性,如lambda表达式和流API等。