【Java基础知识点】
1. **访问修饰符的区别**:
- `public`:任何地方都可以访问。
- `private`:只能在同一个类内部访问。
- `protected`:可以在同一包内及不同包的子类中访问。
- `friendly(默认)`:在同一包内可访问,不是类成员的不能访问。
- 不写修饰符时,默认为friendly。
2. **ArrayList和Vector的区别,HashMap和Hashtable的区别**:
- `ArrayList`与`Vector`:
- 同步性:`Vector`是线程安全的,`ArrayList`不是。
- 扩容策略:`Vector`默认扩容为原来容量的两倍,`ArrayList`则为原来容量的一半。
- `HashMap`与`Hashtable`:
- 历史:`Hashtable`是老版本,基于`Dictionary`类;`HashMap`是Java 1.2引入的新实现,实现了`Map`接口。
- 同步性:`Hashtable`线程安全,`HashMap`不是。
- 空值支持:`HashMap`允许`null`作为键或值,`Hashtable`不允许。
3. **Char型变量存储中文**:
- Java中的`char`类型采用Unicode编码,每个`char`占用16位,因此可以存储中文字符。
4. **多线程实现与同步方法**:
- 多线程实现:
- 继承`Thread`类创建新线程。
- 实现`Runnable`接口并将其传递给`Thread`对象。
- 同步实现:
- 使用`synchronized`关键字,锁定特定代码块或方法,确保一次只有一个线程执行。
- 使用`wait()`、`notify()`和`notifyAll()`方法,控制线程间的协作。
5. **继承时类的执行顺序**:
- 在创建子类实例时,会先执行父类的构造器,再执行子类的构造器。在给定的例子中,输出为:
```
FatherClass Create
FatherClass Create
ChildClass Create
```
6. **内部类的实现方式**:
- 内部类可以是成员内部类、局部内部类、匿名内部类或静态内部类。
- 示例中展示了成员内部类的用法,当创建外部类对象时,内部类对象也会被创建。
- 题目选项中,有效的内部类声明需考虑其访问权限和静态属性:
- A. 内部类可以访问外部类的非静态成员,但`methoda()`声明为静态,所以无法访问`d1`,此选项错误。
- B. 正确,因为`InnerOne`是公共的,且`methoda()`是静态的,可以直接访问`d1`(静态成员可以访问静态成员)。
- C. 正确,`InnerOne`是私有的,可以访问外部类的非静态成员,但是不能直接声明为静态内部类,因为静态内部类无法访问外部类的非静态成员。
以上就是关于Java基础的几个关键知识点,包括访问修饰符、集合框架的比较、字符存储、多线程以及内部类的相关内容。这些知识点在公司的笔试和面试中经常出现,对理解Java编程至关重要。