指标 | 重载 | 重写 |
---|---|---|
类属关系 | 发生在同一个类中 | 发生在父子类中 |
参数列表 | 参数类型不同|个数不同|顺序不同,返回值和访问修饰符可以不同 | 参数列表必须相同 |
方法名称 | 相同 | 相同 |
指标 | String | StringBuffer | StringBuilder |
---|---|---|---|
可变性 | 不可变(使用final) | 可变 | 不可变 |
线程安全性 | 安全,常量不可变 | 安全,同步锁 | 不安全,没有同步锁 |
性能 | 每次生成新的对象 | ———————— | 比StringBuffer高15% |
三个S的总结:
-
使用String操作少量数据
-
使用StringBuilder操作单线程字符串缓冲区的大量数据
-
使用StringBuffer操作多线程字符串缓冲区的大量数据
==与equals
-
== (判断地址)
-
基本数据类型 -> 比较值
-
引用数据类型 -> 比较内存地址
-
-
equals (两种情况)
-
覆盖了equals方法,若内容相等,返回true
-
没有覆盖equals方法,等价与"=="
-
-
说明
-
String中的equals方法是被重写过的
-
Final关键字
-
修饰变量:如果是基本数据类型的变量,被final修饰则不可更改,如果是引用数据类型,则不能再指向其他的对象
-
修饰方法:修饰方法的目的之一是为了锁定方法,防止其他类继承该方法所在的类进而修改方法的含义。目的之二是效率,
-
修饰类:该类不能被继承,final类中的所有成员方法都被隐式地指定为final方法
接口和抽象类的区别
指标 | 接口 | 抽象类 |
---|---|---|
是否有方法实现 | 所有方法不能有实现 | 可以有实现 |
实例变量类型 | 默认是final | 不一定 |
实现 | 支持实现多个接口 | 只能继承一个 |
实现方法 | 实现接口的所有方法 | 不一定 |
设计层面 | 行为规范 | 模版设计 |
2019-07-12
There's no losing only learning
There's no falture only opportunities
There's no problem only solutions