Java面试必备:基础篇

需积分: 10 4 下载量 53 浏览量 更新于2024-07-29 收藏 1.03MB DOC 举报
"Java常见面试题 基础" 这些面试题涵盖了Java语言的基础知识,包括语法、数据类型、操作符、控制结构、类和对象、接口、内存管理以及多态性等方面。以下是对这些知识点的详细解释: 1. 一个".java"源文件可以包含多个类,但只能有一个公共类(public class),且该公共类的名称必须与文件名相同。 2. Java中没有`goto`关键字,它是一种被废弃的控制流语句,Java推崇更清晰的编程逻辑,因此没有采用。 3. `&`是位运算符,无论两边的操作数是否为真,都会进行计算;而`&&`是逻辑与运算符,只有当左边的操作数为真时,才会评估右边的操作数。 4. 要跳出多重嵌套循环,可以使用`break`语句,配合标签来指定跳出哪个循环。例如:`break label;` 5. `switch`语句可以作用在`byte`, `char`, `short`, `int`以及枚举类型上,但在Java 7之后,也可以作用于`String`类型。 6. 对于`short s1 = 1; s1 = s1 + 1;`,这里会自动提升`short`到`int`,可能会超出`short`的范围,需要强制类型转换。而`s1 += 1;`编译器会自动处理类型转换,避免溢出。 7. `char`型变量可以存储一个中文汉字,因为UTF-16编码中一个字符可能占据两个字节。 8. 计算2乘以8最有效率的方式是直接使用`2 * 8`。 9. 设计一个一百亿的计算器要考虑数值的精度问题,可能需要使用`BigDecimal`类来处理大数运算。 10. `final`关键字修饰变量时,意味着引用一旦初始化后就不能改变,即不能指向其他对象,但引用的对象内容是可以改变的,除非对象本身也是`final`的。 11. `==`比较的是两个对象的引用,而`equals()`方法通常比较的是对象的内容。对于基本类型,`==`就是比较值;对于对象,`==`比较的是两个引用是否指向同一个对象,`equals()`比较的是对象的内容是否相等。 12. 静态变量属于类,而实例变量属于类的每个实例。静态变量在类加载时初始化,所有实例共享;实例变量在创建对象时初始化,每个对象有自己的副本。 13. 不能从一个`static`方法内部发出对非`static`方法的调用,因为`static`方法不依赖于任何实例对象,而非`static`方法需要实例对象。 14. `Integer`是`int`的封装类,两者在使用上有性能和自动装箱拆箱的区别。`int`是原始类型,处理速度更快,而`Integer`提供了更多方法和特性。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11,`round()`方法四舍五入到最接近的整数。 16. 代码的不妥之处可能包括语法错误、逻辑错误或不符合最佳实践的情况,具体要看代码内容。 17. `public`、`private`、`protected`和默认(包访问)作用域决定了类、方法和变量的可见性。`public`对所有类可见,`private`仅对同一类可见,`protected`对同一包及子类可见,无修饰符的成员对同一包内的类可见。 18. `Overload`是重载,表示同一类中方法名相同但参数列表不同的多个方法;`Override`是重写,表示子类重新定义父类中已存在的方法。重载不改变返回值类型,而重写可能会改变方法体但不能改变返回值类型。 19. 构造器`Constructor`不能被`override`,但可以被`overload`。 20. 接口可以继承接口;抽象类可以实现接口,但不能继承具体类;抽象类中可以有静态的`main`方法,但无法运行,因为抽象类不能实例化。 21. 实现`clone()`方法时,通常会包含`super.clone()`,用于复制对象。 22. 面向对象的特征包括封装、继承、多态。 23. Java中实现多态性的机制主要是通过接口和继承,以及方法的覆盖(`Override`)。 24. `abstract class`可以包含未实现的方法,用于定义类的规范;`interface`则完全是抽象的,只能包含常量和抽象方法。 25. `abstract`方法不能同时是`static`,不能同时是`native`,也不能同时是`synchronized`,因为它们的性质互斥。 26. 内部类(Inner Class)是嵌套在另一个类中的类,分为静态内部类(Static Nested Class)和非静态内部类。静态内部类像普通类一样,可以独立存在,而非静态内部类需要外部类的实例来创建对象。 27. 内部类可以引用其包含类的成员,包括私有成员,但不能访问`final`的局部变量,除非该变量被初始化。 28. 匿名内部类(Anonymous Inner Class)是没有名字的内部类,通常用于快速实现一个接口或继承一个类,并立即创建其对象。 以上是Java面试中常见的基础问题和解答,理解并掌握这些知识将有助于面试者在面试中表现出色。