第六章【面向对象(下)】
- 包装类及其用法
- toString 方法的用法
- == 和 equals 的区别
- static 关键字
- 实现单例类
- final 关键字的用法
- 不可变类与可变类
- 缓存实例的不可变类
- abstract 关键字的用法
- 实现模板模式
- 接口的概念与作用
- 定义接口的语法
- 实现接口
- 接口和抽象类的联系与区别
- 面向接口编程的优势
- 内部类的概念和定义语法
- 非静态内部类和静态内部类
- 创建内部类的对象
- 扩展内部类
- 匿名内部类与局部内部类
- Lambda 表达式与函数接口
- 方法引用和构造器引用
- 枚举类概念和作用
- 手动实现枚举类
- JDK 1.5 提供的枚举类
- 枚举类的成员变量、方法和构造器
- 实现接口的枚举类
- 实现接口的枚举类
- 包含抽象方法的枚举类
- 垃圾回收和对象的 finalize方法
- 强制垃圾回收的方法
- 对象的软、弱和虚引用
- JAR 文件的用途
- 使用jar 命令创建JAR 文件
JDK 1.5之后,java 提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)的功能。
自动装箱:可以把基本数据类型直接赋值给包装类的对象。
自动拆箱:可以把包装类的对象直接赋值给基本数据变量。
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
String转换到其他:WrapperClass.parseXxx()
其他转换到String:String.valueOf() 或者 直接 +"";就可以
== 和 equals()方法
常量池: 用于管理在编译阶段就被确认并被保存在已编译的.class文件中的数据。而像 new 出来的就是运行期确定的,被保存在堆内存。
==: 对于简单数据类型,即比较数值;对于引用型,比较是否指向同一个对象。
equals: 可以自己编写相关代码,默认比较地址,String的为比较字符序列。
单例类:
如果一个类始终只能创建一个实例,则这个类被称为实例类。此时在类中缓存一个该类的变量以此来生成一个唯一的实例。
final 关键字:
可用于修饰 类、变量及方法。
宏变量:类似C++的,final a = 5; 之后就会使用相应的值取代该变量(宏替代)
条件有三: 1、使用final修饰符修饰 2、在定义时即指定初始值(使用简单的运算并未使用方法亦可) 3、该初始值在编译期就可以被确定下来
final 变量:
注意对于类的成员变量及类向量,由于系统会自动初始化,所以不可在普通方法中对其进行赋值
final 方法:
使用final 修饰的方法不能被重写,可以被重载。
final 类: 无法被继承。
不可变类:
创建该类的实例后,该实例的实例变量是不可改变的。Java提供的8个包装类及java.lang.String 都是不可变类。
缓存实例的不可变类:
如果需要多次使用相同的实例对象,可以考虑将其缓存下来。
例如可以在类中使用数组将其缓存下来,再通过某个方法获取实例对象,重要特征相同则返回相同对象,否则就创建新实例并缓存到数组中去。