记记常用的API
常用API
Object
- 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是java中的祖宗类
- Object类的方法是一切子类都可以直接使用的,所有我们要学习Object类的方法
- 常用的方法:toString()、equals()
toString()存在的意义
默认是打印当前对象的地址
父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!!
equals()默认是比较当前对象与另一个对象的地址是否相同,返回true/false
- 直接比较两个对象的地址是否相同完全可以用”==”代替equals
- 父类equals存在的意义就是为了被子类重写,以便子类自己来定制比较规则
Object类下toString()源码
public String toString() {
return getClass().getName() + "@" +Integer.toHexString(hashCode());
}
Object类下equals()源码
public boolean equals(Object obj) {
return (this == obj);
//this当前对象的地址,地址的比较
}
举例:Person类(并没有重写toString、equals)
package test;
public class Person {
private int age;
private String name;
public Person() {
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package test;
public class Test2 {
public static void main(String[] args) {
Person boy1 = new Person(18,"小明");
Person boy2 = new Person(18,"小明");
System.out.println(boy1);
System.out.println(boy1.toString());
System.out.println(boy1.equals(boy2));//对象.equals(对象),false,比较地址,两个对象的地址不一样
}
}
输出结果
test.Person@1b6d3586
test.Person@1b6d3586
false
在Person类下重写两个方法
package test;
import java.util.Objects;
public class Person {
private int age;
private String name;
public Person() {
}
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
//toString+Enter即可(快捷生产),也可以自己定义
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
//equals+enter它会提示,你一路next即可
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals