Java面试必备知识点梳理

5星 · 超过95%的资源 需积分: 9 3 下载量 156 浏览量 更新于2024-07-25 1 收藏 558KB DOC 举报
"这是一份全面的Java复习文档,涵盖了Java的基础知识,面试常考问题,包括类定义、运算符、循环控制、数据类型、封装、继承、多态、接口等多个方面,旨在帮助学习者巩固和提升Java编程技能。文档内容丰富,实用性强,适合备考Java相关职位的开发者进行复习和自我测试。" Java作为一款广泛使用的编程语言,其基础知识的掌握对于任何Java开发者来说都是至关重要的。以下是对文档中提及的一些关键知识点的详细解释: 1. Java源文件可以包含多个类,但只能有一个公共类(public class),且文件名必须与公共类名相同。 2. Java中没有`goto`语句,它使用流程控制结构如`break`、`continue`来跳转。 3. `&`是位运算符,`&&`是逻辑运算符。前者在任何时候都会评估两边的操作数,后者则在左操作数为假时不会评估右操作数。 4. 使用`break`语句可以跳出多重嵌套循环。 5. `switch`语句可以作用于`byte`、`char`、`short`、`int`和枚举类型,但在Java 7及以上版本可以通过`switch`与`String`一起使用。 6. 对于`short`类型的变量,直接相加可能导致数据溢出,因此`s1=s1+1`可能会有错误。而`s1+=1`会自动提升变量类型,避免溢出。 7. `char`型变量可以存储中文汉字,因为一个中文汉字在Unicode编码中通常占用两个字节。 8. 计算2乘以8最有效率的方式是直接使用`2 * 8`。 9. 设计一个一百亿的计算器要考虑数值溢出问题,可以使用`BigInteger`类处理大整数计算。 10. `final`关键字修饰变量意味着其引用一旦初始化后不能改变,但引用的对象的属性是可以修改的(如果对象是可变的)。 11. `==`比较的是变量的值,而`equals()`方法用于比较对象的内容是否相等。 12. 静态变量属于类,随着类的加载而存在,不受实例化的影响;实例变量属于对象,随着对象的创建而存在。 13. 不能从`static`方法内部直接调用非`static`方法,因为`static`方法与类关联,而非`static`方法与对象关联。 14. `Integer`是`int`的包装类,两者在使用上有性能和功能上的区别,如自动装箱拆箱、方法支持等。 15. `Math.round()`返回最接近的整数,`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 提供的代码片段不完整,但可能涉及代码规范或异常处理问题。 17. 作用域`public`、`private`、`protected`分别表示公共、私有、包内可见。默认(无修饰符)的作用域是包内可见。 18. `Overload`是重载,允许同一类中有方法名相同但参数列表不同的方法;`Override`是重写,子类可以覆盖父类中已有的方法。重载不改变返回类型,重写返回类型必须一致。 19. 构造器不能被`override`,但可以重载。 20. 接口可以继承接口;抽象类可以实现接口;抽象类不能继承具体类(concrete class),但可以继承其他抽象类;抽象类可以有静态的`main`方法,但不能作为程序入口。 21. 在实现`clone()`方法时,通常会添加`super.clone()`以确保正确复制对象。 22. 面向对象的特征包括封装、继承、多态。 23. Java中通过方法的重写和重载实现多态,即同名方法在不同对象上有不同的行为。 24. `abstract class`可以包含抽象方法和非抽象方法,用于定义规范;`interface`只能包含抽象方法,用于定义接口。 25. 抽象方法不能同时是`static`、`native`或`synchronized`,因为它们的特性与抽象方法相冲突。 26. 内部类是定义在另一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类不持有外部类的引用,可以直接创建实例;非静态嵌套类需要外部类实例的上下文才能创建。 27. 内部类可以访问其包含类的所有成员,包括私有成员,但不能声明静态成员(除了静态嵌套类)。 28. 匿名内部类(AnonymousInnerClass)是在没有类名称的情况下创建的类,通常用于实现接口或扩展已有类,并且只在定义的地方使用。 以上只是文档部分内容的简要解释,完整的复习资料将涵盖更多Java语言特性和最佳实践,是学习和准备Java面试的重要资源。