Java面试必备知识:基础篇

下载需积分: 10 | PDF格式 | 933KB | 更新于2024-07-20 | 153 浏览量 | 0 下载量 举报
收藏
"Java面试宝典,包含了Java基础部分的面试问题和答案,涉及语言特性、语法、类与对象、内存管理等多个方面。" 在Java面试中,基础部分通常是考察的重点,以下是一些常见问题和相关知识点: 1. 一个`.java`源文件中可以包含多个类,但只能有一个公开类(public class),且类名需与文件名相同。其他非公开类(如private或包访问类)可以在同一个文件中定义。 2. Java中没有`goto`语句,它遵循结构化编程原则,推崇使用流程控制结构(如if、for、while、switch)来控制程序流程。 3. `&`和`&&`都是逻辑运算符。`&`始终会计算两边的操作数,而`&&`(短路与)只有当第一个操作数为真时才会计算第二个操作数。 4. 要跳出多重嵌套循环,可以使用`break`语句配合标签(label)来指定跳出的循环层次。 5. `switch`语句可以作用在`byte`, `char`, `short`, `int`以及枚举类型上,自Java 7起,也可以作用在`String`上。 6. 对于`short`类型的变量,直接赋值加1会导致类型提升到`int`,所以`s1=s1+1`会报错。而`s1+=1`则会自动拆箱、转换、装箱,因此不会报错。 7. `char`型变量可以存储单个Unicode字符,包括中文汉字,因为每个`char`占16位。 8. 计算2乘以8最有效率的方法是直接使用`*`运算符:`2 * 8`。 9. 设计一个能处理百亿级计算的计算器要考虑效率和精度,可能需要使用大整数类(如BigInteger)和避免不必要的类型转换。 10. 使用`final`关键字修饰变量时,对于基本类型,其值不可变;对于引用类型,引用本身不可变,但引用的对象仍可变。 11. `"=="`比较的是两个变量的值是否相等,而`equals()`方法比较的是对象的内容是否相等。对于非`null`的引用类型,`==`比较的是引用是否指向同一对象,`equals()`是对象内容的比较。 12. 静态变量属于类,而实例变量属于类的每个实例。静态变量在类加载时初始化,所有实例共享;实例变量在创建对象时初始化,每个对象有自己的副本。 13. 不能从静态方法内部直接调用非静态方法,因为静态方法属于类,而非静态方法属于对象。 14. `Integer`是`int`的包装类,它们之间可以自动装箱和拆箱。`Integer`提供了更多方法和功能,而`int`是原始类型,性能更好。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。`Math.round()`方法四舍五入到最接近的整数。 16. 下面的代码可能存在的不妥之处通常与变量的作用域、类型转换、异常处理等有关,具体分析需要查看完整代码。 17. 公共(public)、私有(private)、受保护(protected)和默认(package-private)访问修饰符分别代表了不同级别的访问权限。`public`可在任何地方访问,`private`仅在类内部,`protected`在类及其子类和同包内,无修饰符则限于同包。 18. Overload是重载,即方法名相同但参数列表不同。Override是重写,子类继承父类后修改或实现父类的方法。Overloaded方法可以改变返回值类型,但Override不能。 19. 构造器Constructor不能被override,但可以重载。 20. 接口可以继承接口。抽象类可以实现接口,但不能继承具体类。抽象类可以有静态的main方法,但静态方法无法访问非静态成员。 21. 在实现`clone()`方法时,通常会包含`super.clone()`调用,以复制当前对象。 22. 面向对象的特征主要包括封装、继承、多态。 23. Java通过方法重写(Override)和接口实现来实现多态。 24. `abstract`方法不能同时是`static`,因为静态方法与类关联,而抽象方法与对象关联。`abstract`方法也不能是`native`,因为`native`方法已由C/C++实现。同样,`abstract`方法不能是`synchronized`,因为抽象方法没有具体实现。 25. 内部类包括匿名内部类、局部内部类、成员内部类(包括静态嵌套类)。静态嵌套类(StaticNestedClass)与普通内部类(InnerClass)的主要区别在于,静态嵌套类不持有对外部类的引用,可以直接通过类名创建实例。 这些面试问题涵盖了Java基础知识的广泛范围,准备面试时需要深入理解并能灵活运用这些知识点。

相关推荐