根据给定文件的信息,我们可以提炼出以下几个重要的JAVA面试知识点: ### 1. 访问修饰符:`public`, `private`, `protected`, 和 默认访问权限(`friendly`) #### 重要概念: - **`public`**:对于任何类都是可见的。 - **`protected`**:对同一包内的类或子类是可见的。 - **`private`**:仅对当前类内部是可见的。 - **默认访问权限**(通常称为`friendly`):仅在同一包内的类是可见的。 ### 2. 集合类对比:`ArrayList` vs `Vector`;`HashMap` vs `Hashtable` #### `ArrayList` 与 `Vector` 的比较: - **线程安全性**:`Vector` 是线程安全的,而 `ArrayList` 不是。 - **性能**:由于 `Vector` 提供了线程安全性,因此在多线程环境中它的性能可能会低于 `ArrayList`。 - **初始化容量**:`Vector` 的默认初始容量为 10,而 `ArrayList` 的默认初始容量为 0。 #### `HashMap` 与 `Hashtable` 的比较: - **历史背景**:`Hashtable` 最早出现在 Java 1.0 中,而 `HashMap` 是在 Java 1.2 中引入的。 - **线程安全性**:`Hashtable` 是线程安全的,而 `HashMap` 不是。 - **允许 null 值**:`HashMap` 允许键和值为 `null`,而 `Hashtable` 不允许。 ### 3. 字符与 Unicode - **字符表示**:在 Java 中,一个 `char` 类型占用 16 位(2 字节),这足以表示 Unicode 编码中的基本多语言平面(BMP)中的所有字符。 - **字符编码**:Java 使用 Unicode 编码来存储字符,这意味着它可以处理全球几乎所有语言的文字。 ### 4. 同步机制与线程安全 - **同步关键字**:`synchronized` 关键字用于确保在多线程环境下对共享资源的独占访问。 - **等待与通知**:`wait()` 和 `notify()` 方法用于实现线程间的通信,通常与 `synchronized` 一起使用。 ### 5. 构造函数调用顺序 考虑以下代码示例: ```java package test; public class FatherClass { public FatherClass() { System.out.println("FatherClassCreate"); } } public class ChildClass extends FatherClass { public ChildClass() { System.out.println("ChildClassCreate"); } public static void main(String[] args) { FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); } } ``` 运行结果: ``` FatherClassCreate FatherClassCreate ChildClassCreate ``` 解释:子类构造函数会隐式调用父类的无参构造函数。当创建 `ChildClass` 实例时,首先调用了父类 `FatherClass` 的构造函数。 ### 6. 内部类的使用 #### 示例代码: ```java public class OuterClass { private class InterClass { public InterClass() { System.out.println("InterClassCreate"); } } public OuterClass() { InterClass ic = new InterClass(); System.out.println("OuterClassCreate"); } public static void main(String[] args) { OuterClass oc = new OuterClass(); } } ``` 输出结果: ``` InterClassCreate OuterClassCreate ``` 解释:内部类可以直接访问外部类的所有成员,包括私有成员。在这个例子中,内部类 `InterClass` 在外部类 `OuterClass` 的构造函数中被实例化。 #### 内部类的有效声明: - 选项 C 是正确的,因为非静态内部类可以访问外部类的所有成员。 - 选项 E 也是正确的,因为抽象类可以用作内部类的声明。 ### 7. 浮点数赋值 - 正确做法:使用类型转换 `float f = (float) 3.4;`。 ### 8. Java 集合框架概述 Java 集合框架提供了多种数据结构,包括: - **`Collection` 接口**:集合层次结构的根接口。 - **`List` 接口**:有序且可重复的集合。 - **`LinkedList`**:基于双向链表实现的 `List`。 - **`ArrayList`**:基于数组实现的 `List`。 - **`Vector`**:与 `ArrayList` 类似,但提供线程安全性。 - **`Stack`**:基于 `Vector` 实现的后进先出(LIFO)集合。 - **`Set` 接口**:不包含重复元素的集合。 - **`Map` 接口**:键值对的集合。 - **`Hashtable`**:线程安全的 `Map`。 - **`HashMap`**:非线程安全但性能更高的 `Map`。 以上是对给定文件中提到的关键知识点的详细解读和补充。
- 粉丝: 1
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助