Java面试必备:经典面试题解析

需积分: 18 4 下载量 146 浏览量 更新于2024-07-31 收藏 991KB DOC 举报
"Java面试宝典,涵盖Java基础、语法特性、面向对象、类与接口、内部类等多个方面,适合应届毕业生准备面试使用。" 在Java编程语言中,面试题目往往涉及到多个核心概念和技术。以下是对这些知识点的详细解释: 1. 一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),且文件名必须与这个公共类的名称相同。 2. Java中没有`goto`语句,这是为了提高代码的可读性和可控性。 3. `&`和`&&`的主要区别在于短路逻辑。`&`始终会计算两边的操作数,而`&&`则只有在左侧操作数为真时才会计算右侧。 4. 要跳出多重嵌套循环,可以使用`break`语句配合标签(label)来实现。 5. `switch`语句不能直接作用于`byte`、`long`或`String`,但在Java 7及以后版本,`switch`可以用在`String`上。 6. `short s1 = 1; s1 = s1 + 1;`会丢失数据,因为加法结果可能超出了`short`的范围。而`s1 += 1;`编译器会自动处理类型转换。 7. `char`变量可以存储一个中文汉字,因为UTF-16编码中一个字符可能占用两个字节。 8. 计算2乘以8最有效率的方式是直接使用`2 * 8`。 9. 设计一个一百亿的计算器要考虑数值溢出问题,可能需要使用大整数类(如`BigInteger`)。 10. 使用`final`关键字修饰变量,意味着该引用一旦赋值后就不能再改变,但引用的对象内容可以改变。 11. `"=="`比较的是两个对象的引用是否相同,而`equals()`方法比较的是对象的内容是否相等。 12. 静态变量属于类,实例变量属于对象。静态变量被所有实例共享,实例变量在每个对象中独立存在。 13. 不能从静态方法内部直接调用非静态方法,因为静态方法与类关联,而非静态方法与对象关联。 14. `Integer`是`int`的包装类,两者在使用上有性能和自动装箱拆箱的区别。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 不妥之处的代码没有给出,但通常可能涉及类型转换错误、未初始化变量等问题。 17. `public`、`private`、`protected`和默认访问修饰符分别代表全局、私有、包内可见和仅类内可见。 18. Overloaded方法(重载)可以改变参数列表,但不能改变返回值类型。Override方法(重写)必须保持返回值类型和参数列表一致。 19. 构造器不能被override,但可以重载。 20. 接口可以继承其他接口。抽象类可以实现接口,但不能继承具体类。抽象类中可以有静态的`main`方法,但这并不常见。 21. 实现`clone()`方法时,通常会包含`super.clone()`以创建对象副本。 22. 面向对象的特征包括封装、继承、多态。 23. Java通过方法重写(Override)和父类引用指向子类对象(多态)来实现多态。 24. `abstract class`和`interface`主要区别在于抽象类可以有方法实现,而接口只能定义方法。 25. `abstract`方法不能是`static`、`native`或`synchronized`,因为这些特性与抽象方法的定义冲突。 26. 内部类是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不持有外部类的引用,可以直接创建;非静态嵌套类需要外部类对象才能实例化。 27. 内部类可以引用它的包含类的成员,包括私有成员,但不能访问静态成员。 28. 匿名内部类(Anonymous Inner Class)是一种没有名字的类,常用于实现接口或父类的简短定义,通常在需要一次性使用的场合使用。 这些面试题涵盖了Java的基础知识、语法特性、面向对象编程以及类与接口的使用等方面,对于理解和准备Java面试至关重要。