引言
全民炒股的时代好像来临了 。
------------高S
明天期末考,今天学的就不多。
Object类
简介
Object类是Java中所有类的父类,可以理解为人类的亚当夏娃。又称为根类。故Object中的toString(),equals()等方法所有类都可以使用。今天重点介绍这两种方法。
toString()方法

toString()返回的是这个对象的字符串形式;一般是该对象的地址。但由于这样没什么实际意义,故一般都重写。
重写方法可以自己输入,也可以自动构建

单击Generate,选择toString(),编译器就会自动重写了
@Override
public String toString() {
//一般都是这种格式
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", habbit='" + habbit + '\'' +
'}';
}
这是重写之前的输出字符串

这是重写之后的;明显看到重写后这个方法的效果更好。

所以可以根据返回值来判断toString在这个对象中是否被重写。例如String类使用toString()方法返回的是字符串值,说明String类的toString()已经被重写。
equals()方法
equals()方法的源码是这样的;对象为基础类型时比较值,是引用类型时比较地址。
public boolean equals(Object obj) {
return (this == obj);
}
无论什么时候重写,都要记得重写hashcode()方法,【这个要到后面集合再学】,现在只看equals()的重写。与toString()一样,也可以自动生成。
@Override
public boolean equals(Object o){
//优化性能
if(o==this)return true;
//该类不为person的父类,此时用多态转型会报错.
if(o instanceof Person==false||o==null)return false;
//if(getClass()!=o.getClass()) 与 instanceof 的效果一样的;
//Object类->person (多态问题)
Person p=(Person)o;
return id==p.id&&age==p.age
&&
//String类不能用'=='比较
Objects.equals(name,p.name)&&Objects.equals(habbit,p.habbit);
}
//下面是自动生成的,暂时没了解作用,好像是哈希表啥的~~~
@Override
public int hashCode() {
return Objects.hash(id, name, age, habbit);
}
Objects类
上面的重写equals()方法中用到了Objects.equals()方法,因为这个方法可以避免空指针报错。
下面是源码;
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
//可以看到,如果是空对象,就直接返回false,不会报错l。
}
总结
诸君,高考加油!
本文深入解析Java中的Object类,作为所有类的基类,Object的重要性不言而喻。文章详细介绍了toString()和equals()方法的原理及重写技巧,同时探讨了Objects类的equals()方法如何避免空指针异常。
&spm=1001.2101.3001.5002&articleId=107165019&d=1&t=3&u=4fb2c514ba8742f49d485ea580b3136f)
581

被折叠的 条评论
为什么被折叠?



