Java面试必备知识点:基础到高级挑战

需积分: 3 4 下载量 159 浏览量 更新于2024-07-30 收藏 708KB DOC 举报
"这是一份Java面试宝典,涵盖了各种Java面试常见的问题,旨在帮助准备面试的人员全面了解和复习Java基础知识。" Java面试是检验开发者技术能力的重要环节,以下是一些Java面试中常出现的知识点详解: 1. 一个`.java`源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开类,作为主类的辅助类存在。 2. Java中没有`goto`语句,这是为了保证代码的可读性和可控性,鼓励使用结构化的控制流程。 3. `&`和`&&`的区别在于:`&`始终进行逻辑与运算,而`&&`是短路逻辑与,只有当左侧表达式为真时才会计算右侧表达式。 4. 要跳出多重嵌套循环,可以使用`break`语句配合标签来实现,如`break label;`。 5. `switch`语句可以作用于`byte`, `char`, `short`, `int`以及枚举类型,但不能直接作用于`long`和`String`,JDK 7以后支持`String`类型的`switch`。 6. `short s1 = 1; s1 = s1 + 1;`错误在于操作后超过了short的最大值,需要显式转换。而`s1 += 1;`会自动提升类型,然后进行加法运算,最后再赋值给short变量。 7. `char`型变量可以存储一个中文汉字,因为一个中文汉字在Unicode编码中占用两个字节,与char类型相匹配。 8. 最有效率地计算2乘以8等于16,可以直接写出`int result = 2 * 8;`。 9. 设计一个能处理一百亿的计算器要考虑数值溢出和精度问题,可以使用`BigInteger`类处理大整数,以及`BigDecimal`处理高精度浮点数。 10. `final`关键字修饰的变量,其引用一旦初始化后不能改变,但对于引用的对象,如果对象内的状态是可以改变的。 11. `==`比较的是两个变量的引用,而`equals()`方法比较的是对象的内容。对于基本类型,`==`就代表值的比较;对于对象,`equals()`通常是重写后的逻辑比较。 12. 静态变量属于类,实例变量属于对象。静态变量在类加载时被创建,生命周期与类相同;实例变量在对象创建时初始化。 13. 不可以在静态方法内部直接调用非静态方法,因为非静态方法依赖于实例对象,而静态方法是在类级别上执行的。 14. `Integer`是`int`的包装类,`Integer`对象包含一个`int`值。它们之间的区别在于,`int`是原始类型,`Integer`是对象,涉及内存分配和对象引用。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。`Math.round()`四舍五入到最近的整数。 16. 代码中的不妥之处可能包括但不限于未声明变量、语法错误或逻辑错误,具体要看代码内容。 17. `public`表示全局可访问,`private`限制在同一类内访问,`protected`限制在同包及子类中访问,不写时表示默认访问权限,限制在同一包内访问。 18. Overload(重载)是方法名相同但参数列表不同的多态形式,不改变返回值类型;Override(重写)是子类覆盖父类的同名方法,保持返回值类型和参数列表一致。 19. 构造器不能被`override`,但可以被`overload`。 20. 接口可以继承接口;抽象类可以实现接口;抽象类可以继承具体类,但具体类不能继承抽象类。静态的`main`方法不涉及对象实例化,所以可以存在于抽象类中。 21. 实现`clone()`方法时,通常会包含`super.clone()`调用来创建对象副本。 22. 面向对象的特征包括封装、继承、多态。 23. Java通过方法重写(Override)和接口实现来实现多态。 24. `abstract class`可以包含抽象方法和非抽象方法,而`interface`只能包含抽象方法(JDK 8开始可以有默认方法和静态方法)。抽象类可以有实例变量,接口则不能。 25. `abstract`方法不能同时是`static`,不能同时是`native`,但可以是`synchronized`。 26. 内部类是定义在另一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类不持有对外部类的隐式引用,可以直接实例化,而内部类需要外部类的实例才能创建。 27. 内部类可以引用其包含类的成员,包括私有成员,但不能访问静态成员,除非使用`this.`或`OuterClass.this.`来明确指定。 28. 匿名内部类是没有名字的类,通常用于快速实现一个接口或继承一个类,它可以直接定义在需要使用的地方。 这些知识点只是Java面试中的一部分,深入理解和掌握这些概念对于面试和实际开发工作都是非常重要的。