1.API是应用程序编程接口(Application Program Interface)。整个JDK的类库就是一个javase的API。每一个API配置一套API帮助文档。
2.首先研究一下老祖宗类Object,因为Object类中的方法都是所有子类通用的,任何一个类默认继承Object,就算没有直接继承,最终也会间接继承。
3.Object类中的常用方法:
①protected Object clone():负责对象克隆的。
②int hashCode():获取对象哈希值的一个方法。
③boolean equals(Object obj):判断两个对象是否相等。
④String toString():将对象转换成字符串形式。
⑤protected void finalize():垃圾回收器负责调用的方法。
4.toString方法。
源代码:
public String toString(){
return this.getClass().getName() + "@" + Integer.toHexString(hashCode());
}
源代码中默认实现是类名@对象的内存地址通过哈希值转换为十六进制的形式。
该方法的设计目的是通过调用这个方法可以将一个java对象转换成字符串形式。
java规范中建议所有的子类都重写toString()方法。
5.equals方法。
源代码:
public boolean equals(Object obj){
return (this == obj);
}
默认实现比较的是两个对象的内存地址。因此也需要进行重写,根据业务要求什么情况下两
个对象相等来进行重写。
该方法的设计目的是以后编程的过程当中,都要通过equals方法来判断两个对象是否相等。
String类已经重写了toString()和equals()方法。
重要结论:
①java中基本数据类型比较是否相等,使用==;
②java中所有的引用数据类型是否相等统一使用equals方法来判断。
6.finalize()方法。
源代码:
protected void finalize() throws Throwable{
}
只有一个方法体,里面没有代码,而且这个方法是protected修饰的。
这个方法不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法。因此该方法只需要重写,重写完自动会有程序来调用,GC负责调用。
执行时机:当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法。finalize()方法实际上是SUN公司为Java程序员准备的一个时机---垃圾销毁时机,如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法当中。
在项目中可能有这样的业务需求:记录一下所有对象在JVM中被释放的时间,这是就要把这段代码写到finalize()方法中。
代码:System.gc(); //建议启动垃圾回收器。不过只是建议,可能启动,也可能不启动
7.hashCode()方法。
源代码:
public native int hashCode();
这个方法不是抽象方法,是带有native修饰符的本地方法,底层调用C++程序。
该方法返回的是哈希码,实际上就是一个java对象的内存地址,经过哈希算法,得出的一个值。所以hashCode()方法的执行结果可以等同看作一个java对象的内存地址。
8.内部类:在类的内部又定义了一个新的类。但是使用内部类编写的代码,可读性很差,能不用尽量不用。
内部类的分类:
①静态内部类
②实例内部类
③局部内部类
匿名内部类是局部内部类的一种,因为这个类没有名字而得名。不建议使用匿名内部类,因为一个类没有名字,没有办法重复使用,并且代码太乱,可读性差。
PS:根据动力节点课程自己归纳总结,如有侵权,联系删除。