常用API-Object,Objects
Object
Object类的作用:
1.一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类。
2.Object作为所有类的父类,提供了很多常用的方法给每个子类对象拿来使用。
Object类的两种常用方法:
toString()和equals()
Object的toString方法:开发中直接输出对象,默认输出对象的地址其实是毫无意义的。开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。
所以toString方法存在的意义是:父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!
Object的equals方法:直接比较两个对象的地址是否相同完全可以用“==”替代equals。同时,开发中很多业务情况下,更想判断2个对象的内容是否一样。
所以equals存在的意义:为了被子类重写,以便子类自己来定制比较规则(比如比较对象内容)。
示例:我们定义一个Student类
public class Student {
private String name;
private String sex;
private int age;
public Student() {
}
public Student(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我们定义一个test类,写main方法,在main方法new 一个Student对象,返回这个对象toString方法
public class test {
public static void main(String[] args) {
Student s = new Student("李白","男",18);
System.out.println(s.toString());
}
}
得到结果是s的地址;
得到结果没有什么意义。我们根据自己需要在Student类重写toString方法,这个直接返回对象中的值。
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
运行结果
修改test
public class test {
public static void main(String[] args) {
Student s1 = new Student("李白","男",18);
Student s2 = new Student("李白","男",18);
System.out.println(s1.equals(s2));
}
}
运行结果:
因为地址不同,所以返回false,所以我们需要在在Student类重写equals方法。
@Override
public boolean equals(Object o) {
if (this == o) return true;
//判断是不是同一对象
if (o == null || getClass() != o.getClass()) return false;
//判断对象是否为空或比交对象与被比较对象是否是同一类
Student student = (Student) o;
//强制转换,将o变成Student对象
return age == student.age && Objects.equals(name, student.name) && Objects.equals(sex, student.sex);
}
运行结果:
1.Object的toString方法的基本作用是什么,存在的意义是什么?
基本作用:给子类继承,子类对象调用可以返回自己的地址。
意义:让子类重写,以便返回子类对象的内容。
2.1.Object的equals方法的基本作用,存在的意义是什么?
基本作用:默认是与另一个对象比较地址是否一样
存在的意义:让子类重写,以便比较对象的内容是否相同。
Objects
Objects是什么?
Objects是一个工具类,提供了一些方法去完成一些功能。
Objects的常用方法
equals和isNull
官方在进行字符串比较时,没有用字符串对象的的equals方法,而是选择了Objects的equals方法来比较。因为使用Objects的equals比较更加安全,当a对象null不会报异常。
示例:新建test类
import java.util.Objects;
public class test {
public static void main(String[] args) {
String s1 = "蔡徐坤";
String s2 = "小黑子";
String s3 = null;
String s4 = "蔡徐坤";
System.out.println(Objects.equals(s1,s2));
System.out.println(Objects.equals(s1,s4));
System.out.println(Objects.equals(s3,s4));
}
}
运行结果:
至于i是Null与==是一样,但isNull看起来更加专业更加容易理解。
1.对象进行内容比较的时候建议使用什么?为什么?
建议使用Objects提供的equals方法
比较的结果是一样的,但是更安全。