本文档汇总了最新的Java面试题,覆盖了Java基础方面的多个知识点,对于准备Java面试的学生和开发者具有较高的参考价值。
1. **作用域**:Java中提供了四种访问权限修饰符:public、protected、default(即不写时,默认为friendly,也叫包内访问)和private。public表示在任何地方都可以访问,protected在同一个包和子类中有效,default只在同一包内有效,而private则只能在当前类内部访问。理解这些区别有助于确保代码的封装性和安全性。
2. **匿名内部类**:Java中的匿名内部类不能继承其他类,但可以实现接口。这在编写简洁的事件监听器或回调函数时很有用,但需要注意的是,匿名内部类无法拥有独立的名字。
3. **Static Nested Class vs Inner Class**:两者主要区别在于静态内部类(Static Nested Class)不需要外部类实例即可创建对象,且不允许访问非静态外部类成员,而普通内部类(Inner Class)则可以访问所有外部类成员。
4. **& vs &&**:&是位运算符,执行按位与运算,主要用于处理二进制位操作;&&是逻辑与运算符,用于条件判断,只有当两个表达式的值都为真时,结果才为真。
5. **Collection vs Collections**:Collection是Java集合框架的顶层接口,包含Set和List等接口。Collections是Java集合类库中的工具类,提供了一组静态方法,如排序、查找、线程安全操作等,用于简化对集合的操作。
6. **assert**:在Java中,assert用于在开发和测试阶段进行条件检查,确保程序运行在预期的状态。如果条件为假,程序会抛出AssertionError异常,帮助开发者定位问题。
7. **String和数组内存分析**:例如,`String s = new String("xyz")`会创建两个对象:一个字符序列对象和一个字符串对象引用。`Math.round`方法会根据参数四舍五入到最接近的整数,如`Math.round(11.5)`返回12,`Math.round(-11.5)`返回-11。
8. **类型转换与运算符**:在某些情况下,如`short s1 = 1; s1 = s1 + 1;`,需要留意基本类型的运算结果可能需要强制类型转换,而`+=`操作会自动完成类型转换。Java中没有传统的`goto`语句。
9. **方法重载与重写**:在Java中,重载是同一类中方法名相同但参数列表不同的情况,重写(或覆盖)是子类中定义的方法与父类中方法同名、参数匹配且返回类型可变的情况。
10. **Set的唯一性判断**:Set中的元素不允许重复,判断元素是否重复通常通过equals()方法,而不是==运算符,因为equals()比较的是元素内容,而==比较的是对象引用。
以上知识点总结了Java基础的核心概念,理解和掌握这些内容对于Java开发者来说至关重要,尤其是在面试过程中,能够流畅地解释和应用这些知识将大大提高竞争力。