"Java面试宝典2013版"
Java面试宝典2013版是一份针对Java程序员面试准备的文档,包含了丰富的Java基础知识和技术点。这份文档以问答的形式,涉及了Java语言的核心概念、语法特性、面向对象原则、异常处理、内存管理等多个方面,旨在帮助求职者在面试中展现出扎实的Java技能。
1. Java源文件可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共的(如private、default等)。
2. Java语言中没有`goto`语句,它倾向于使用结构化控制流。
3. `&`是位运算符,而`&&`是逻辑与运算符。前者始终计算两边的操作数,后者(短路逻辑与)在左边操作数为假时不会计算右边操作数。
4. 跳出多重嵌套循环,可以使用`break`语句配合标签来实现。
5. `switch`语句可以作用在`byte`、`char`、`short`和`int`上,JDK 7以后还可以作用在枚举类型(`enum`)上,但不能作用于`long`或`String`。
6. 对于`short s1=1;`,直接赋值`s1=s1+1;`会丢失精度,因为结果会转换为`int`。而`s1+=1;`编译器会自动处理类型转换,所以没有问题。
7. `char`类型可以存储单个Unicode字符,因此可以存储中文汉字。
8. 计算2乘以8的最有效率方式是直接写`2 * 8`。
9. 设计一个一百亿的计算器要考虑大整数的运算、内存管理和性能优化。
10. 使用`final`关键字修饰变量时,引用不能变,但引用的对象如果可变,其状态仍然可以改变。
11. `==`比较的是对象的引用,而`equals`方法(默认情况下)比较的是对象的内容。重写`equals`可以实现自定义比较逻辑。
12. 静态变量属于类,而实例变量属于对象。静态变量由类名访问,实例变量由对象实例访问。
13. 不能从一个静态方法内部直接调用非静态方法,因为静态方法与类关联,而非静态方法与对象关联。
14. `Integer`是`int`的包装类,两者在使用上有不同,如自动装箱拆箱、内存管理等。
15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。
16. 提供的代码片段未给出,无法分析错误。
17. `public`、`private`、`protected`及默认访问修饰符的区别在于访问权限:`public`全局可见,`private`仅本类可见,`protected`本类和子类可见,无修饰符则仅包内可见。
18. Overload是重载,可以改变参数列表,但不能改变返回值类型;Override是重写,用于覆盖父类方法,返回值类型和参数列表必须保持一致。
19. 构造器不能被重写(override),但可以被重载(overload)。
20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类。抽象类中的`main`方法可以是静态的,但并不常见。
21. 实现`clone()`方法时,通常会包含`super.clone()`以创建对象的副本。
22. 面向对象的特征包括封装、继承、多态。
23. Java中通过方法重写(Override)和接口实现(Interface Implementation)实现多态。
24. `abstract class`可以包含方法实现,而`interface`完全抽象,不能包含方法实现。`abstract`类可以有构造器,可以有非`abstract`方法,而接口不能。
25. `abstract`方法不能同时是`static`,不能同时是`native`,也不能同时是`synchronized`,因为这些修饰符与`abstract`的定义冲突。
26. 内部类是定义在另一个类内部的类,分为静态内部类(Static Nested Class)和非静态内部类(Inner Class)。静态内部类像普通类一样,可以独立存在,非静态内部类必须依赖于外部类实例。
27. 内部类可以引用它的包含类的成员,包括私有成员,但不能访问静态成员(除非使用`OuterClass.this`语法)。
28. 匿名内部类可以直接定义而不声明类名,它可以继承其他类或实现接口。在某些场景下,如回调函数、事件监听等,匿名内部类非常有用。
以上是Java面试宝典2013版中部分核心知识点的解释,这份文档涵盖了Java开发者需要掌握的关键技能和概念,对于求职者来说是很好的复习资料。