本篇Java面试宝典涵盖了广泛的Java基础知识和概念,旨在帮助求职者准备2017年的面试。以下是部分内容的详细解析:
1. **Java源文件与类** - 源文件中可以包含多个类,但每个类只能有一个公共访问权限的类(public class)。如果有多于一个public class,需要使用package来组织。
2. **Java的控制结构** - Java不支持全局的`goto`语句,避免了控制流程的混乱。使用`break`和`continue`来控制循环结构,对于多重嵌套循环,可以使用`break`跳出当前层次。
3. **运算符&和&&** - `&`是位与运算符,`&&`是逻辑与运算符。两者在逻辑判断中的行为不同,`&&`会短路计算,而`&`则始终执行。
4. **Java数值类型和操作** - `shorts1=1;s1=s1+1;`有类型不匹配错误,因为不能将int和short直接相加。正确的写法是`s1 = (short)(s1 + 1)`。`s1 += 1;`没有问题,它自动类型转换。
5. **字符类型与Unicode** - Java的`char`类型只能存储单个16位Unicode字符,因此不能直接存储中文汉字,需要使用字符串或Unicode编码来处理。
6. **算术运算效率** - 最有效率的算术方法是直接使用数字表示,如`2 * 8 = 16`。
7. **计算器设计** - 需要理解基本的算法和数据结构,设计一个能够处理大整数的高效算法,可能涉及 BigInteger 或者其他高精度计算库。
8. **final关键字** - `final`修饰变量时,指的是变量的值不可变(常量),而不是引用对象本身。如果修饰引用类型,是指引用指向的对象不可变。
9. **==与equals** - `==`比较的是对象引用,`equals`是对象自身的比较。理解这两个方法在不同类型和对象间的使用场景差异。
10. **静态变量与实例变量** - 静态变量属于类,所有实例共享;实例变量与每个对象绑定。静态方法不能访问实例变量,除非显式传递。
11. **方法重载与覆盖** - 方法重载(Overload)是同名方法有不同的参数列表,返回值类型不影响。方法覆盖(Override)是子类重写父类方法,必须有相同的返回类型、参数列表和访问级别。
12. **类与接口的关系** - 接口仅定义行为,不能有实现代码;抽象类可以有默认实现,且可以继承其他类和接口。
13. **多态与抽象类/接口** - 多态是通过继承、接口或方法重写实现。抽象类用于提供默认实现,接口只定义行为。关于`clone()`方法,通常最后一行会调用`super.clone()`来复制实例。
14. **面向对象特性** - 封装、继承、多态、抽象和接口是面向对象的五个核心特性。
15. **内部类和匿名类** - 内部类是嵌套在另一个类中的类,分为静态和非静态。匿名类用于创建没有名字的对象,通常与事件监听、回调等场景相关。
通过学习这些知识点,面试者可以展现对Java语言深入理解和实践能力,有助于提升面试表现。