1 常见对象
1.1 API与Object类概述
1.1.1 JAVA API
应用程序编程接口
就是java提供给我们使用的类,这些类将底层的实现封装了起来。
1.2 Oject类概述
类层次结构的根类。
所有类都直接或者间接的继承自该类。
1.2.1构造方法
public object()
2 Object类常用的四种方法
2.1 hashcode()方法
public inthashcode();
(1)返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
(2)不同对象的,hashcode()一般不会相同,同一对象的哈希码值一定相同。
(3)不是对象的实际地址值,可理解为逻辑地址值。
2.2 getclass()方法
public final class getclass()
(1)返回此Object的运行时类。
(2)可以通过class类中的一个方法,获取对象的真实类的全名称。
public string getName()
2.3 tostring()方法
public string tostring()
直接输出对应的名称,就是调用对象的tostring()方法。
2.3.1 演示
(1)返回该对象的字符串表示。
代码:
public String toString() {
return getClass().getName() + "%" + Integer.toHexString(hashCode());
}
(2)值为:getClass().getName() + '%' + Integer.toHexString(hashCode())
(3)由于默认情况下的数据对我们来说没有意义,建议重写该方法。
2.4 equals()方法
(1)指示其他对象是否于此对象“相等”。
(2)默认情况下比较的是对象的引用是否相同。
(3)由于比较对象的引用没有意义,建议重写该方法。
(4)一般用于比较成员变量是否相等。
2.4.1方法代码优化
object类的equals()方法代码优化
(1)提高效率。
(2)提高健壮性。
2.4.2"=="和"equals()的区别
“==”比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆内存中存储的地址是否相等,即栈中的内容是否相等。
“equals()方法”(是String类从他的超累Object中继承的)被用来检测两个变量是否相等,即两个对象的内容是否相等,区分大小写。
2.5clone()方法
clone()的权限修饰符是受保护的,再用时让该类重写该方法,并把该方法的权限修饰符该为public
2.5.1浅克隆与深克隆
(1)浅克隆
使用clone()方法采用的是浅克隆
a.如果一个对象需要调用clone的方法克隆,那么该对象所属的类必须要实现Cloneable接口。
b.Cloneable接口只不过是一个标识接口而已,没有任何方法。
c.对象的浅克隆就是克隆一个对象的时候,如果被克隆的对象中维护了另外一个类 的对象,这时候只是克隆另外一个对象的地址,而没有把 另外一个对象也克隆一份。
d.对象的浅克隆也不会调用到构造方法的。
(2)深克隆
被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。