equals与==
| == | equals |
---|
基本类型 | 判断两个值是否相等 | 无 |
引用类型 | 是否引用同一个对象 | 引用的对象是否等价 |
String、StringBuffer、StringBuilder
| String | StringBuilder | StringBuffer |
---|
内容 | 不可变 | 可变 | 可变 |
多线程 | 线程安全 | 线程不安全 | 线程安全 |
使用场景 | 内容不变 | 内容需要修改 | 需要保证线程安全 |
重写(overload)与重载(override)
| 重载 | 重写 |
---|
使用位置 | 继承关系中 | 同一个类中 |
使用方式 | 在方法声明上完全相同 | 方法名相同,参数列表不同 |
局部变量与成员变量
| 局部变量 | 成员变量 |
---|
定义位置 | 方法内部 | 方法外部,类中 |
作用范围 | 仅方法内部可用 | 整个类都可用 |
默认值 | 没有默认值 | 有默认值,规则和数组一样 |
内存中的位置 | 栈内存 | 堆内存 |
抽象类与接口
| 抽象类 | 接口 |
---|
设计目的 | 对类的抽象,目的是代码复用 | 对行为的规范 |
设计原则 | 自下而上,抽取子类共性 | 自上而下,供其他类使用 |
实现关系 | 单继承 | 多实现 |
成员变量 | 可以有各种类型 | 必须是public static final |
使用场景 | 关注事物的本质 | 只关注操作或功能 |
多态
多态表示一个对象有多重特征。多态机制使不同的内部对象可以共享相同的外部接口,虽然针对不同对象的具体操作不同,但通过一个公共的类,他们那些操作可以通过相同的方式予以调用。
局部内部类
局部内部类只能访问局部final变量的原因是局部内部类不会因为定义在方法中就随着方法的执行结束而消亡,当外部类的方法结束后,局部变量会随之消失,但内部类可能还存在,只有当没有谁再引用它的时候才会被回收,内部类是将局部变量复制为自己的成员变量,此时再进行修改,原来的局部变量也应该修改,但局部变量已经消失了,所以必须保证这两个变量是一致的,也就是不能修改,保证是final不可变的。
Java异常体系
- Error指的是java运行时系统的内部错误,程序不会抛出该类异常,会被中断,比如OOM内存不够错误;
- Exception包括编译器异常和运行时异常。编译器异常指在程序编译过程中,编译不通过,如IO错误,数据类型赋值错误等;运行时异常指在程序运行过程中,导致当前线程执行失败,如空指针异常、索引越界异常等。
异常的处理方式 - 不进行具体处理,而是抛出给调用者(throw,throws);
- 自己处理,try…catch捕获异常进行针对性处理
throw和throws
| throw | throws |
---|
使用位置 | 函数内部 | 函数上 |
功能 | 抛出具体的问题对象,执行到throw,功能就结束了 | 用于声明异常,让调用者只知道该功能可能出现的问题 |
异常的发生 | 执行到throw一定跑出来某种异常 | 表示异常出现的一种可能性,不一定会发生 |