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

需积分: 0 0 下载量 24 浏览量 更新于2024-09-11 收藏 57KB DOC 举报
"Java面试题" Java面试题涵盖了广泛的领域,包括基础知识、语法特性、类与接口、集合框架、多线程、异常处理、IO流、网络编程等。以下是更详细的解释: 1、作用域public,private,protected,以及不写时的区别: 这涉及到Java的访问控制权限。`public`的成员可以在任何地方访问;`protected`的成员在同一个包内的类和子类中可访问;`friendly`(也称为包级私有)的成员只在同包内可访问;`private`的成员只能在其定义的类内部访问。如果不指定访问修饰符,默认为`friendly`。 2、AnonymousInnerClass(匿名内部类): 匿名内部类可以直接实现接口或继承抽象类,但它们没有名称,所以不能直接创建新的实例,通常用在需要一次性实现某个接口或类的地方。它们不能继承其他非抽象类。 3、StaticNestedClass和InnerClass的不同: 静态内部类(Static Nested Class)不持有对外部类的隐式引用,可以在没有外部类实例的情况下被实例化。而普通内部类(Inner Class)会持有一个对外部类的引用,所以它必须在外部类的实例上下文中创建。 4、&和&&的区别: `&`是位运算符,用于对两个操作数的二进制位进行逐位与运算。`&&`是逻辑与运算符,只有当两边的条件都为真时,结果才为真。在短路逻辑中,如果左边的条件为假,右边的条件不会被执行。 5、Collection和Collections的区别: `Collection`是所有集合接口的父接口,如Set和List。`Collections`是Java提供的工具类,包含了一系列静态方法,用于对集合进行操作,如排序、查找、线程安全化等。 6、什么时候用assert: `assert`语句用于在开发和测试阶段检查程序状态,确保程序的关键假设是正确的。在生产环境中,通常通过设置JVM参数来禁用assertion,以避免性能损失。 7、Strings=new String("xyz");创建了几个StringObject: 在Java中,创建`String`对象时,如果常量池中已存在相同的字符串字面量,会复用该对象。但这里创建了一个新的`String`对象"xyz",然后又创建了一个引用变量`Strings`指向它,所以总共创建了两个对象。 除此之外,Java面试还可能涉及以下内容: - 枚举类型(Enum) - 泛型(Generics) - 构造器与工厂方法 - 多线程中的同步与并发 - 异常处理(try-catch-finally, throws, throw) - 类加载机制 - 垃圾回收(Garbage Collection) - Lambda表达式与函数式编程 - Stream API - Java反射机制 - 注解(Annotations) - JVM内存模型和调优 这些知识点都是Java开发者在面试中可能会遇到的,深入理解和掌握它们对于提升编程技能和成功面试至关重要。