2017 Java面试精华:涵盖基础到进阶知识点
需积分: 3 131 浏览量
更新于2024-07-20
收藏 633KB DOC 举报
Java面试宝典2017版涵盖了广泛的Java基础知识和面试常见问题,以下是部分内容的详细解析:
1. **源文件与类**: Java源文件可以包含多个类,但不是内部类。每个类必须有自己的名字,并且一个.java文件中最多只能有一个公共类(public class)。非公共类可以有多个。
2. **Java的控制结构**: Java不支持直接使用`goto`语句,这有助于避免复杂的控制流程混乱。使用`break`和`continue`来控制循环。
3. **逻辑运算符**: `&`是按位与运算符,`&&`是逻辑与运算符。`&`用于数值运算,`&&`用于条件判断,只有当两边都为真时结果才为真。
4. **跳出嵌套循环**: 使用`break`语句可以从多重嵌套循环中任意一层退出,如`for`, `while`或`switch`循环。
5. **switch与类型**: `switch`语句适用于基本数据类型(如byte, short, char)和枚举类型,但不适用于`String`,因为`String`不是原始类型。
6. **类型转换错误**: 第一个例子中的`s1=s1+1;`没有问题,但`shorts1=1;s1+=1;`有问题,因为`s1`可能超出`short`类型的范围。第二个错误可能是类型转换错误,因为`+=`需要一个`int`或`short`。
7. **char类型**: `char`类型用于存储单个Unicode字符,包括英文字符和中文汉字,但每个`char`只占两个字节,因此无法存储完整的汉字。
8. **效率计算**: 最有效率地计算2乘以8,直接使用乘法运算符`*`即可,无需特别算法。
9. **大数计算**: 设计一个大数计算器需要了解Java的BigDecimals类或者自定义大整数算法。
10. **final关键字**: `final`修饰变量表示该变量的值不可变,如果是引用类型,则是指引用对象本身不可变,但引用指向的对象可能发生变化。
11. **"=="与equals"**: `==`比较的是对象引用,`equals()`是对象间的值比较,对于基本类型和大多数类,`==`默认实现equals方法。
12. **静态变量与实例变量**: 静态变量属于类,所有实例共享;实例变量属于对象,每个实例独立。静态方法不能直接访问实例变量,除非通过类名。
13. **方法调用**: 可以从静态方法中调用非静态方法,但静态方法不能直接调用实例方法。`Integer`是包装类,与基本类型`int`有性能差异。`Math.round()`会向最近的整数四舍五入。
14. **访问修饰符**: `public`、`private`、`protected`决定了不同作用域内的可见性和访问权限。`Overload`指方法重载,即方法名相同但参数列表不同,不改变返回值类型。`Override`是子类重写父类方法,返回值类型可以保持一致。
15. **构造器和继承**: 构造器是可以被重写的,接口可以继承接口,抽象类可以实现接口但不能继承具体类。抽象类不能有静态main方法,因为静态方法不能创建实例。
16. **Clone方法**: 写`clone()`方法时通常会调用`super.clone()`,这是实现浅复制的基础。
17. **面向对象特性**: 包括封装、继承、多态、抽象、接口等,这些是Java面向对象编程的核心概念。
18. **多态与抽象类与接口**: Java通过继承、接口和方法重写实现多态。`abstract`方法可以同时声明为`static`、`native`或`synchronized`,但这些特性与多态性不直接相关。
19. **内部类与嵌套类**: 内部类包括静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。内部类可以直接访问包含类的私有成员,但有一定的限制,如不能访问final修饰的局部变量。
20. **匿名内部类**: 匿名内部类用于实现接口或继承其他类,没有明确的类名,但可以访问包含类的局部变量。
这些知识点覆盖了Java基础语法、数据类型、控制结构、面向对象概念、多态、继承和内部类等多个方面,是Java面试中常被提问的主题。掌握这些内容有助于准备和应对Java面试。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2018-02-16 上传
2018-03-02 上传
2019-05-19 上传
2018-11-06 上传
219 浏览量
1385 浏览量
kevin_garnett23
- 粉丝: 0
- 资源: 15