目录
一、API概述
API
全称Application Programming Interface,译为应用程序编程接口。
Java API 就是Java提供给我们使用的类,这些类将底层的实现封装了起来。
二、Obiect类
-
构造方法
public Object()
-
hashCode()方法
public int hashCode()
作用:
1.返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
2.不同对象的,hsahCode()一般不同。但是,同一个对象的hashCode()值一定相同。
3.不是对象的实际地址值,可以理解为逻辑地址值。
例如:
public class Test { public static void main(String[] args) { Object o = new Object(); int code = o.hashCode(); System.out.println(code); } }
-
getClass方法
public final Class getClass()
作用:
1.返回此Object的运行时类;
2.可以通过Class类中的一个方法,获取对象的真实类的全名称。
例如:
public class Test { public static void main(String[] args) { Object o = new Object(); Class<?> aClass = o.getClass(); System.out.println(aClass); } }
-
toString()方法
源码:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
作用:
1.返回该对象的字符串表示
2.默认情况下的数据对我们来说没有意义,所以建议重写该方法,一般是将该类的所有的成员变量组成返回即可。
例如:
Student类,重写了toString方法
public class Student { int age = 20; String name = "Alice"; public void show(){ System.out.println("Student的show方法"); } @Override public String toString() { return "age:"+age+"\nname:"+name; } }
测试类:
public class Test { public static void main(String[] args) { Student student = new Student(); System.out.println(student.toString()); } }
-
equals()方法
源代码:
public boolean equals(Object obj) { return (this == obj); }
作用:
1.指示其他某个对象是否与此对象“相等”,
2.默认情况下比较的是对象的引用是否相同,
3.由于比较对象的引用没有意义,一般建议重写该方法,一般用于比较成员变量的值。
例如:重写equals方法比较成员变量的值
import java.util.Objects; public class Student { int age = 20; String name = "Alice"; public Student(int age,String name){ this.age=age; this.name=name; } public void show() { System.out.println("Student的show方法"); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } } //测试类 public class Test { public static void main(String[] args) { Student student = new Student(18,"Jack"); System.out.println(student.equals(new Student(18, "Jack"))); } }
-
clone()方法
clone()的权限修饰符是受保护的,在用的时候,让该类重写该方法,并把该类的权限修饰符改为public。
使用clone()方法采用的是浅克隆的方式。
对象浅克隆要注意的细节
1.如果一个对象要调用clone()的方法克隆,那么该对象所属的类必须要实现Cloneable接口. 2.Cloneable接口只不过是一个标识接口,没有任何方法. 3.对象的浅克隆就是克隆一个对象的时候,如果被克隆的对象中维护了另外一个类的对象,这时候只是克隆另外一个对象的地址,而没有把另外一个对象也克隆一份。
例如:
//Student类 public class Student implements Cloneable{ int age = 20; String name = "Alice"; @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public String toString() { return "Student{" + "age=" + age + ", name='" + name + '\'' + '}'; } } //Test测试类 public class Test { public static void main(String[] args) throws CloneNotSupportedException { Student student = new Student(); Object clone = student.clone(); System.out.println(clone.toString()); System.out.println(student.toString()); } }