"这是一份关于Java面试题目的集合,包含了59道题目,主要涉及Java基础知识,包括作用域、匿名内部类、静态内部类、位运算符与逻辑运算符的区别、集合类与集合工具类的区别以及断言的使用等。"
1、作用域public,private,protected,以及不写时的区别
Java中的访问修饰符决定了类成员的可见性。public作用域允许所有类访问,private仅限于本类,protected对于同包内的类和子类可见,而没有指定修饰符的成员(friendly)只对同包内的类可见。
2、AnonymousInnerClass(匿名内部类)
匿名内部类没有名称,它可以实现接口,但不能继承类。这意味着它可以直接实现接口的方法,而无需定义一个新的类名。
3、StaticNestedClass和InnerClass的不同
静态内部类(Static Nested Class)可以独立于外部类实例存在,而普通内部类(Inner Class)需要依赖外部类的实例。静态内部类无法直接访问外部类的非静态成员,但可以访问静态成员。
4、&和&&的区别
&是位运算符,用于逐位比较两个操作数,而&&是逻辑与运算符,只有当两边的操作数都为真时,结果才为真。在短路逻辑中,如果第一个操作数为假,&&运算符不会评估第二个操作数。
5、Collection和Collections的区别
Collection是所有集合接口的父接口,包括Set和List等。Collections则是提供了一系列静态方法,用于操作集合,如排序、搜索和线程安全性等。
6、什么时候用assert
断言(Assertion)主要用于调试阶段,它允许开发者在代码中插入检查点,确保某些条件始终为真。如果断言的布尔表达式为假,那么程序会抛出AssertionError,通常在开发和测试环境中启用,生产环境中关闭以优化性能。
7、Strings=new String("xyz");创建了几个StringObject
此操作创建了两个String对象,一个是字符串常量池中的"xyz",另一个是通过new关键字创建的新对象,它引用了"xyz"的副本。
这份面试题集涵盖了Java基础的多个重要概念,对于理解和掌握Java编程语言的核心特性非常有帮助。通过这些题目,开发者可以检验自己的知识水平,并为面试做好准备。