Java面试宝典2012版提供了一系列深入浅出的Java面试问题,涵盖了Java基础到高级概念,旨在帮助求职者准备技术面试。以下是一些核心知识点的详细解释:
1. **源文件和类关系** - 一个`.java`源文件可以包含多个公共类(public class),但不能有多个同名的类。每个类必须独立,避免名称冲突。
2. **Java语言特性** - Java不支持直接使用`goto`语句,通常提倡使用控制流语句如`break`和`continue`来控制程序流程。
3. **逻辑运算符** - `&`表示按位与,用于位操作;`&&`是逻辑与,用于条件判断。两者在类型和用途上有明显差异。
4. **循环结构** - Java中的`break`语句可用于跳出多重嵌套循环,但针对具体层叠的循环结构,需明确指定或使用标签(label)。
5. **switch语句** - `switch`语句可以作用于byte和char类型,但不能直接作用于基本类型的long或String,需通过隐式类型转换或包装类处理。
6. **基本数据类型** - `shorts1=1;s1=s1+1;`会溢出,因为short类型不能直接加1;`shorts1=1;s1+=1;`则是正确的,自动类型提升至int进行计算。关于中文字符,char型变量只能存储单个字符,不适合汉字。
7. **效率与算法** - 最有效率地计算2*8的方法是直接相乘,无需特殊算法。设计大数计算器涉及复杂的数据结构和算法,如 BigInteger 类。
8. **final关键字** - `final`修饰变量时,表示值不可变(常量),如果是引用类型,则引用的对象不可变,而非引用不可变。
9. **比较运算符** - `==`比较的是对象引用,`equals()`方法用于比较对象的内容。理解它们在不同场景下的使用。
10. **成员变量类型** - 静态变量属于类,实例变量属于对象,访问权限和生命周期各不相同。静态方法不能直接调用非静态方法,但可通过类对象间接调用。
11. **Integer与int** - Integer是包装类,用于处理整数边界和自动装箱拆箱,而int是基本类型。
12. **数学函数与精度** - `Math.round()`函数用于四舍五入,对于11.5结果取决于其内部实现。对于负数,根据舍入规则可能会向下取整。
13. **作用域与覆盖** - `public`、`private`、`protected`分别控制类内、同一包内和子类的访问权限。覆盖(Override)仅适用于方法,且方法签名(包括返回类型)必须匹配。
14. **类的继承与多态** - 接口可以继承接口,抽象类可以实现接口但不能继承具体类,抽象类可以有静态main方法,但实际运行时需由子类执行。
15. **克隆与多态** - `clone()`方法用于对象复制,通常需要显式调用父类的`clone()`。面向对象特征包括封装、继承、多态和抽象。
16. **抽象类与接口** - abstract class提供了默认实现,interface只定义方法签名,两者区别在于实现方式。抽象方法不可同时声明为static、native或synchronized。
17. **内部类** - 内部类包括静态内部类和非静态内部类,静态内部类可以在类外部访问外部类的成员,而非静态内部类则受限。
18. **匿名内部类** - 匿名内部类没有名字,通常用于简化事件监听器、实现接口或创建对象。
这些知识点覆盖了Java编程的基础和核心概念,掌握它们有助于准备Java面试,并理解编程实践中的常见问题和解决方案。