1.重载和重写
重载:发生在同一个类上,方法名相同,参数,个数,类型不同
重写:发生在父子类上 子类的访问修饰符范围大于等于父类 返回值类型小于等于父类 抛出异常的范围小于等于父类 父类的方法用private修饰时,子类不可以重写
2.==与equals
==:用来比较两个对象内存地址 基本类型:比较数值大小 引用类型:比较内存地址
equals:未重写:等同于== 重写:比较两个对象的内容
3.String,StringBuffer,StringBuilder
String Immutable类 被声明为final class,所有属性都是final,字符串的拼接等操作都会创建新的对象
StringBuffer 使用append来添加元素 底层是用char数组实现 线程安全 使用Synchronized修饰方法
StringBuilder 非线程安全 减少了性能开销 其他与StringBuilder没有本质区别 底层使用char数组实现
4.final,finally,finalize
final:修饰类,类不可以被继承;修饰方法,方法不可以被重写;修饰变量,变量初始化后值不可以改变
finally:用来保证重点代码一定会被执行,和try…finally;try…catch
…finally一起使用
finalize:用来保证对象在被垃圾回收器回收之前执行一些资源回收的操作,不推荐使用,已过期
5.Exception与Error
Exception与Error都继承Throwable类,在Java中只有Treowable类的实例才可以被捕获或者抛出。
Exception是程序运行中,可以预料和处理的情况。
Error通常是程序正常情况下不太可能出现的情况,绝大部分Error会导致程序处于非正常和不可恢复的状态,通常比较严重,如OOM。
Exception分为受查和非受查异常。受查异常是在编译期间检查的一部分,在源代码需要进行显示捕获处理,非受查异常即运行时异常,通常是代码逻辑出错等导致的。
常见的Exception有:IOException,FileNotFoundExcepton,NullPointException,ArrayIndexOutOfBoundsException等。
6.接口和抽象类
接口:对行为的抽象,所有的方法都是抽象方法,不能实例化,所有的field都隐藏着public static final,没有非静态方法
抽象类:用abstract修饰,可以有一个或者多个抽象方法,也可以没有抽象方法,目的是代码重用。