Object Objects
前言
java 基础复习中…闲着总结一下
一、Object是什么?
:::
包:java.lang.Object
Object类是Java中的祖宗类。
一个类要么默认继承了Object类,要么间接继承了Object类。
Object类的方法是一切子类都可以直接使用的。
二、Object类的常用方法:
1.public String toString():
父类toString()方法存在的意义就是为了被子类重写,以便
返回对象的内容信息输出!!
默认是返回当前对象在堆内存中的地址信息:
com.xxx.xxx.Student@735b478
默认的地址信息格式:类的全限名@内存地址
直接输出对象名称,默认会自动调用toString()方法,所以输出对象toString()调用可以省略不写
开发中直接输出对象,默认输出对象的地址其实是毫无意义的。
开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息!
2.public boolean equals(Object o):
如果要比较两个对象的内容,需要重写对象的equals方法
-- 默认是比较两个对象的地址是否相同。相同返回true,反之。
-- 直接比较两个对象的地址是否相同完全可以用“==”替代equals。
所以equals存在的意义是为了被子类重写,以便程序员可以
自己来定制比较规则。
代码如下 Student:
// s1.equals(s2)
// 需求:只要两个对象的内容一样,我们就认为他们是相等的。
// 比较者:s1 == this
// 被比较者:s2 == obj
@Override
public boolean equals(Object obj){
// 1.必须是学生和学生比较,否则返回false
if(obj instanceof Student){
// 2、obj是学生,开始比较内容
Student s2 = (Student) obj;
return s2.age == this.age && s2.name.equals(this.name)
&& s2.sex == this.sex;
}
return false;
}
三、Objects类的使用:
Objects类与Object还是继承关系。
Objects类是从JDK 1.7开始之后才有的。
1. public static boolean equals(Object a, Object b)
-- 比较两个对象的。
-- 底层进行非空判断,从而可以避免空指针异常。更安全!!推荐使用!!优雅!
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
2. public static boolean isNull(Object obj)
判断变量是否为null ,为null返回true ,反之!
public class ObjectsDemo {
public static void main(String[] args) {
Student s1 = null;
Student s2 = new Student();
// System.out.println(s1.equals(s2));
System.out.println(Objects.equals(s1 ,s2));
System.out.println(s1 == null);// true
System.out.println(Objects.isNull(s1)); // true
System.out.println(s1 == null);// false
System.out.println(Objects.isNull(s2)); // false
}
}