API:应用程序编程接口,Java中的API就是将代码封装起来的类。
Object类:所有类都继承了此类,所有类的根类。
构造方法: public Object()。所有类的构造方法都会访问此类的无参构造。
Object--------hashCode()方法。
功能:返回该对象的哈希码值,默认情况下,该方法根据对象的地址值来计算。
特点:不同对象的hash值是不同的,同一个对象的hash值一定相同。
不是对象的实际地址值,可以理解为逻辑地址值。
Object a = new Object();
System.out.println(a.hashCode());
//结果:356573597
Object--------getClass()方法。
功能:返回此 Object 的运行时类。
特点: 可以通过Class类的一个方法,获取对象的真实类的全名称
Object obj = new Object();
Class aClass = obj.getClass();// Object.class----->字节码文件对象获取出来
Object obj2 = new Object();
Class bClass1 = obj2.getClass();
System.out.println(obj == obj2);
System.out.println(aClass == bClass1);//true
Object--------toString()方法。
功能:返回该对象的字符串表示。
特点:其值是 getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
由于这些数据对我们没有意义,因此重写此方法。
Object obj = new Object();
System.out.println(obj);
System.out.println(obj.toString());
String a =obj.toString();
System.out.println(a);
Object-----equals()方法。
功能: 检测两个对象是否相等。
特点:默认情况比较的是对象的引用是否相同。比较引用是否相同没有意义,因此重写此方法比较成员变量的值是否相等。
优点:提高效率和健壮性。
提问:==和equals的区别。
参考博客
简而言之就是数据存储区域不同,==判断的是是基本数据类型的值,equals处理引用类型变量。
Object-----clone()方法。
clone()的权限修饰符是受保护的,在用的时候,让该类重写该方法,并把该方法的权限修饰符改为public
克隆分为浅克隆和深克隆
使用clone()方法采用的是浅克隆的方式 。
浅克隆的使用:
*如果对象调用clone方法,该对象所属的类必须实现Cloneable接口。
*Cloneable接口只是一个标识接口,没有任何方法。
*浅克隆是一个对象的时候,如果被克隆的对象中存在另一个类的对象,则克隆另一个对象的地址不克隆另一个对象。
*对象的浅克隆不会调用到构造方法。
public class Text {
public static void main(String[] args) throws CloneNotSupportedException{
Person s1 = new Person("张惠妹", 40);
Person s2 = (Person)s1.clone();
s2.name="张三";
s2.age=50;
System.out.println(s1+""+s2);
}
}public class Person implements Cloneable{
public String name;
public int age;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}