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

需积分: 6 2 下载量 199 浏览量 更新于2024-09-14 收藏 301KB DOC 举报
"Java面试宝典2012版提供了Java开发者在面试中常见的问题,涵盖了类的作用域、匿名内部类、静态嵌套类、逻辑运算符、集合接口与工具类、断言以及字符串对象的创建等多个核心知识点。" 1. **类的作用域** Java中的访问修饰符包括`public`, `private`, `protected`和没有修饰符的默认访问级别。`public`的成员可以在任何地方被访问;`protected`成员在同一个包和子类中可访问;`friendly`(默认)只在同包内可见;`private`的成员只能在定义它的类内部访问。 2. **匿名内部类** 匿名内部类没有名称,它可以实现接口或者继承父类。然而,一个匿名内部类不能同时继承一个类和实现接口,只能做其中的一个。如果匿名内部类实现了接口,那么它可以作为接口的实例,而不能继承其他类。 3. **StaticNestedClass和InnerClass的区别** 静态内部类(Static Nested Class)可以像普通类一样创建对象,无需外部类对象,而普通内部类(Inner Class)必须依赖于外部类对象存在。静态内部类不能直接访问外部类的非静态成员,而普通内部类可以。 4. **&和&&的区别** `&`是位运算符,用于对两个操作数的每一位进行逐位与运算,而`&&`是逻辑与运算符,只有当左侧表达式为真时才会评估右侧表达式,通常用于条件判断。 5. **Collection和Collections的区别** `Collection`是所有集合类的顶级接口,包括`Set`和`List`等。`Collections`是提供了一系列静态方法的工具类,用于集合的常用操作,如排序、查找、线程安全处理等。 6. **assert关键字的使用** `assert`用于断言,用于在开发和测试阶段检查代码的正确性。当`assert`后面的布尔表达式为`false`时,会抛出`AssertionError`异常,这有助于快速定位错误。在生产环境中,通常会关闭断言以提高性能。 7. **String对象的创建** `Strings = new String("xyz");`会创建两个`String`对象,一个是常量池中的"xyz",另一个是通过`new`关键字创建的独立对象,其值等于"xyz"。这是因为Java中的字符串是不可变的,所以每次创建新的`String`对象,即使内容相同,都会创建一个新的实例。 这些知识点是Java程序员在面试中常常遇到的问题,深入理解它们对于提升编程能力和解决问题至关重要。