Java面试宝典2011版提供了丰富的Java基础和企业常见面试题,涵盖了Java语言的关键知识点。以下是部分题目及其解析:
1. **类定义**:一个.java源文件可以包含多个类,但前提是这些类必须在同一包内,并且不是作为内部类的形式存在。类的数量没有明确限制,但每个类需单独声明。
2. **控制结构**:Java不支持`goto`语句,这有助于避免控制流程的混乱和代码的可读性。
3. **逻辑运算符**:`&`表示按位与,`&&`表示逻辑与,两者在布尔上下文中不同。`&`操作符用于数值比较,`&&`用于条件判断。
4. **跳出循环**:使用`break`关键字可以跳出当前多重嵌套循环,如果需要跳出所有层循环,可以使用`finally`块或异常处理来达到类似效果。
5. **switch语句**:`switch`语句仅适用于基本数据类型,如byte、short、char和枚举,不适用于long和String。对于字符串,通常使用`equals`方法进行比较。
6. **类型转换与错误**:`shorts1 = 1; s1 = s1 + 1;`会报编译错误,因为不能直接对短整型进行自增操作;而`s1 += 1;`则是正确的。同样,`char`类型不能存储中文汉字,因为`char`是16位Unicode编码,只能表示单个字符。
7. **算术运算**:使用算术运算符`*`和隐式类型转换来计算2乘以8的值,效率最高。至于`Math.round()`,它将浮点数四舍五入到最接近的整数,11.5的结果是12,-11.5的结果是-12。
8. **程序设计**:涉及程序结构和设计,如要求设计一个高效的百亿级计算器,可能考察算法优化和性能理解。
9. **final关键字**:修饰变量时,表示该变量的值不可变,而不是引用对象不可变。`final`关键字还可用于修饰方法和类,使其不可被重写。
10. **==`与equals()`**:`==`比较的是对象引用,`equals()`则比较对象内容。两者的区别在于对象相等性和内存地址。
11. **静态与实例**:静态变量属于类,实例变量与对象关联,静态方法不依赖实例调用,非静态方法属于特定对象。
12. **方法重载与重写**:重载是指同名方法但参数列表不同的情况,返回值类型不影响重载。重写是子类覆盖父类方法,返回类型必须一致。
13. **类和接口**:接口不可继承接口,抽象类可以实现接口但不能继承具体类。静态方法不能在抽象类的`main`方法中定义。
14. **克隆与多态**:`clone()`方法用于对象的浅复制,多态是通过继承和接口实现的,允许不同子类以统一的方式被调用。
15. **面向对象特性**:封装、继承、多态和抽象是面向对象的主要特征。
16. **抽象类和接口**:抽象类可以包含抽象方法和非抽象方法,接口仅提供抽象方法,不可有实现。抽象方法不能同时是静态、native或synchronized。
17. **内部类与匿名类**:内部类是嵌套在另一个类中的类,StaticNestedClass是静态内部类,InnerClass是普通内部类。匿名类是无名称的内部类,用于一次性、临时目的。
18. **内部类引用外部成员**:内部类可以访问其外部类的私有和默认(package-private)成员,但有访问权限限制。
Java面试宝典2011版旨在考察求职者对Java语言基础、设计模式、数据结构、异常处理、类与对象、继承与多态、泛型、集合框架、I/O操作以及面向对象编程原则等方面的理解和应用能力。熟练掌握这些问题对于Java开发者来说至关重要,有助于在实际工作场景中表现出色。