本文档主要讨论了Java编程中的几个关键知识点,涵盖了作用域规则、匿名内部类、静态内部类与普通内部类的区别、Java中的位运算符与逻辑运算符、集合框架中的`Collection`和`Collections`类、以及`assert`关键字的使用以及字符串操作中的内存开销。
1. **作用域规则**:
- Java中有四种访问修饰符:public、protected、default(不写时默认)和private。它们分别决定类成员的可见性和访问范围:
- `public`: 对所有包和子类可见,可被实例化对象直接访问。
- `protected`: 同一包内和子类可见,但非子类的包内不可见。
- `default` (不写时): 在同一个包内可见,子类之间可以访问。
- `private`: 只在定义它的类内可见,不可被其他类访问。
2. **匿名内部类**:
- 匿名内部类没有显式名称,因此不能作为独立的类使用,不能直接继承其他类,但可以实现接口。
3. **Static Nested Class vs Inner Class**:
- Java中的`Static Nested Class`(静态内部类)和`Inner Class`的主要区别在于它们与外部类的关系。静态内部类不需要外部类的实例即可创建对象,且不能访问非静态外部类成员;非静态内部类则需要通过外部类的实例来访问其成员。
4. **位运算符(&)与逻辑运算符(||)**:
- `&` 是位运算符,执行按位与操作,用于处理二进制数据。
- `&&` 是逻辑运算符,执行逻辑与操作,用于条件判断,只有当两个操作数都为真时结果才为真。
5. **`Collection`与`Collections`类**:
- `Collection`是Java集合框架的顶级接口,包含了如List和Set等子接口,代表了一组元素的容器。
- `Collections`是JDK提供的工具类,提供了对集合类的静态方法,例如排序、查找、线程安全操作等,便于简化和增强集合的操作。
6. **`assert`关键字的使用**:
- `assert`在开发阶段用于快速验证条件,确保代码正确性,如果条件为假,程序会中断并抛出AssertionError。
- 发布软件时通常关闭assert,以提高性能。
7. **`String`对象创建**:
- `Strings = new String("xyz");` 创建了一个新的String对象,即使对象的内容相同,也会创建两个不同的String对象,因为Java字符串是不可变的,每次创建都会生成一个新的实例。
以上知识点总结了Java编程中基础概念的重要部分,对于理解和应用Java语言有很高的参考价值。