Object类
Object的基本性质
- Object类是所有类的直接或间接父类
- 直接打印一个对象就是打印这个对象的toString方法的返回值
- Object类的toString方法得到的是对象的地址值
- 一般会对toString方法进行重写
student类的实现
创建一个Student类
public class Student {
public String name;
public int age;
public Student() {
}
public Student(String name,int age) {
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
main函数
public class Demo {
public static void main(String[] args) {
Student st=new Student("张三",23);
System.out.println(st);
}
}
这里打印st出现的是st的地址,是因为Student类会默认继承Object类,Object类中的toString就是打印对象的首地址
Object类的常用方法
- equals方法
默认的Object类中的equals与”==“等价,都是比较地址是否相等
package Object;
public class DemoEquals {
public static void main(String[] args) {
Student st1=new Student("张三",23);
Student st2=new Student("张三",23);
System.out.println(st1==st2);
System.out.println(st1.equals(st2));
System.out.println(st1.name.equals(st2.name));
Object a=st1.name;
Object b=st2.name;
System.out.println(a==b);
}
}
对象之间的比较,“==” 和equals都侧重于比较地址,而涉及到引用(可理解为中间变量)时,equals侧重于值的比较,而双等号侧重于地址的比较
若二者的比较类型中,没有重写equals方法,与比较二者的地址值”==“是等效的
public class InterviewTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="abc";
StringBuilder sb=new StringBuilder("abc");
//1此时调用的是String的equals方法,若与之比较的对象不是String,直接返回false
//保证参数也是字符串,否则直接返回false
System.out.println(s.equals(sb));
//StringBuilder中没有重写equals方法,故用的是object类中的方法
System.out.println(sb.equals(s));
}
}
Objects类的常用方法
public static String toString(对象)
- Object.toString就是调用该对象中的toString
import java.util.Objects;
public class MyObjectsDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student st=new Student("张三",23);
System.out.println(Objects.toString(st));
System.out.println(st);
}
}
public static String toString(对象,默认字符串)
- 传入两个参数,一个是该对象,另一个是该对象为空时,替换的值
Student st2=new Student("小花",23);
String res1=Objects.toString(st2,"随便写一个");
System.out.println(res1);
st2=null;
String res2=Objects.toString(st2,"随便写一个");
System.out.println(res2);
结果
public static Boolean isNull(对象)
- 传入对象,返回该对象是否为空
Student s=null;
System.out.println(Objects.isNull(s));
结果
public static nonNull(对象)
- 传入对象,判断对象是否不是空
Student s=new Student();
System.out.println(Objects.nonNull(s));
结果