2018最新BAT-java经典必考面试题
### 2018最新BAT-java经典必考面试题知识点详解 #### 1. 面向对象的特征有哪些方面? 面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。OOP的主要特性包括抽象、继承、封装和多态。 **抽象** - **定义**: 抽象是指在面向对象编程中提取对象的核心特性和行为,并将这些特性进行建模的过程。它主要包括数据抽象和行为抽象。 - **作用**: 通过抽象,可以减少代码的复杂性,提高复用性,使代码更容易理解和维护。 **继承** - **定义**: 继承是指一个类(子类)可以从另一个类(父类)那里获得其所有的属性和方法的过程。 - **作用**: 继承支持代码复用,提高了软件的可扩展性和可维护性。它是实现多态的基础之一。 - **示例**: 在Java中,可以通过`extends`关键字实现继承。 **封装** - **定义**: 封装是指将数据和对数据的操作捆绑在一起,隐藏内部实现细节,并通过公共接口暴露必要的功能。 - **作用**: 提高了数据的安全性,降低了系统的耦合度。 - **示例**: Java中使用`private`、`protected`、`public`等访问修饰符来控制类成员的可见性。 **多态** - **定义**: 多态是指相同的方法或操作在不同的对象上会产生不同的行为。 - **分类**: - 编译时多态: 通过方法重载实现。 - 运行时多态: 通过方法重写实现。 - **作用**: 增强程序的灵活性和扩展性,简化代码结构。 #### 2. 访问修饰符public, private, protected,以及不写(默认)时的区别? Java提供了四种访问级别: - `public`: 公共访问权限,可以在任何地方被访问。 - `protected`: 受保护的访问权限,可以在同一包内或子类中访问。 - `default` (未指定): 默认访问权限,仅限于同一包内的类可以访问。 - `private`: 私有访问权限,仅限于当前类可以访问。 下面是具体的对比表格: | 访问级别 | 当前类 | 同包子类 | 不同包子类 | |---------|-------|---------|----------| | public | √ | √ | √ | | protected | √ | √ | × | | default | √ | √ | × | | private | √ | × | × | #### 3. String是不是最基本的数据类型? - **结论**: 不是。 - **解释**: Java中有八种基本数据类型,它们分别是`byte`、`short`、`int`、`long`、`float`、`double`、`char`和`boolean`。`String`属于引用类型,而不是基本数据类型。 #### 4. float f = 3.4 是否正确? - **结论**: 不正确。 - **原因**: `3.4`是一个双精度数(double),直接赋值给`float`会导致类型不匹配,因为双精度数比浮点数能表示更大的范围和更高的精度。 - **解决方法**: - 使用强制类型转换: `float f = (float) 3.4;` - 显式指定为浮点数: `float f = 3.4F;` #### 5. short s1 = 1; s1 = s1 + 1; 与 short s1 = 1; s1 += 1; 有何区别? - **结论**: - `short s1 = 1; s1 = s1 + 1;`会编译错误,因为`s1 + 1`的结果类型是`int`,需要显式转换为`short`。 - `short s1 = 1; s1 += 1;`可以正确编译,因为它自动进行了类型转换。 - **原因**: `s1 + 1`中,数字`1`默认为`int`类型,所以结果也是`int`。`s1 += 1;`语法中,Java会自动进行强制类型转换。 #### 6. Java有没有goto? - **结论**: Java中没有直接使用`goto`的关键字。 - **解释**: `goto`是Java的一个保留字,但在当前版本的Java中并未使用。这意味着虽然它在语言定义中存在,但实际编程时不可用。 以上内容详细解释了给定文件中的各个知识点,希望能够帮助读者更好地理解Java中的面向对象编程基础及一些常见的面试题目。
剩余33页未读,继续阅读
- 粉丝: 172
- 资源: 1256
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助