根据给定文件中的标题、描述、标签以及部分内容,我们可以从中提炼出多个重要的Java知识点,并进行详细解释。 ### 1. 访问修饰符 public, private, protected, 默认(friendly) 在Java中,类成员(包括变量和方法)的访问级别可以通过访问修饰符来控制。这些修饰符包括 `public`、`private`、`protected` 和默认访问级别(有时也称为“包私有”或“friendly”): - **public**:最开放的访问级别,无论类是否在同一包内,任何类都可以访问该成员。 - **protected**:允许同一包内的类及不同包内的子类访问该成员。 - **默认(friendly)**:只允许同一包内的类访问该成员。当声明成员时没有指定任何访问修饰符,则该成员具有默认访问级别。 - **private**:最封闭的访问级别,只有声明该成员的类可以访问它。 例如: ```java package com.example; public class MyClass { public int publicField; // 可被任何类访问 protected int protectedField; // 同一包内或子类可访问 int defaultField; // 只能被同一包内的类访问 private int privateField; // 只能被MyClass自身访问 } ``` ### 2. ArrayList vs Vector, HashMap vs Hashtable #### ArrayList vs Vector - **共同点**:两者都实现了List接口,用于存储动态数组。 - **不同点**: - **线程安全性**:`Vector`是线程安全的,而`ArrayList`不是。这意味着在多线程环境中,`Vector`的方法会同步,而`ArrayList`的方法不会同步。 - **性能**:由于`Vector`的同步机制,它的性能通常低于`ArrayList`。 #### HashMap vs Hashtable - **历史背景**:`Hashtable`是基于早期的`Dictionary`类实现的,而`HashMap`是在Java 1.2版本中引入的`Map`接口的一个实现。 - **线程安全性**:`Hashtable`是线程安全的,而`HashMap`不是。`HashMap`提供了更高的性能,但在多线程环境下需要额外的同步措施。 - **null值支持**:`HashMap`允许键和值为null,而`Hashtable`不允许键或值为null。 ### 3. char类型与Unicode编码 Java中`char`类型表示一个字符,其大小为16位(2个字节)。这是因为Java采用了Unicode编码系统。Unicode是一种国际化的字符编码标准,能够表示世界上大多数语言的字符集。因此,在Java中,一个`char`可以表示任何Unicode字符。 ### 4. 线程的实现方式 Java中线程有两种实现方式: - **继承Thread类**:创建一个类继承自`Thread`类,并重写其`run()`方法。 - **实现Runnable接口**:创建一个类实现`Runnable`接口并实现其`run()`方法。然后将该对象传递给`Thread`类的构造函数。 ### 5. 构造器执行顺序示例 示例代码展示了在创建对象时构造器的执行顺序。父类`FatherClass`和子类`ChildClass`都有各自的构造器。当创建`ChildClass`对象时,首先会调用父类的构造器,然后再调用子类的构造器。 ### 6. 内部类的实例化 内部类(nested class)可以在外部类的内部定义。创建内部类的实例有两种主要方式: - **非静态内部类**:非静态内部类必须通过外部类的实例来访问。示例代码中,`InterClass`是一个非静态内部类,必须先创建`OuterClass`的实例才能访问`InterClass`。 - **静态内部类**:静态内部类可以通过外部类名直接访问,不需要外部类的实例。选项C是正确的,因为它是非静态内部类,可以直接访问外部类的非静态成员。 ### 7. float类型赋值 在Java中,`float`类型的赋值需要显式地转换数据类型,即使赋值的数字看起来像是浮点数也不例外。例如,`float f = 3.4;` 这样的语句是不正确的,应该写成 `float f = (float)3.4;` 或者 `float f = 3.4f;`。 ### 8. Collection框架概述 Java的集合框架提供了一组灵活的数据结构来存储和操作数据。其中最基础的接口是`Collection`,它有两个主要的子接口:`List`和`Set`。`List`保持元素的插入顺序,而`Set`不允许重复的元素。`Map`接口则用于存储键值对。 以上知识点是Java程序员面试中常见的考点,熟练掌握这些基本概念和技术细节对于提高面试成功率至关重要。
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助