提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
Object类
输出对象地址
object类里的tostring方法:
正确输出对象里内容
判断俩个对象大小:
object类里的equlas方法:
自己实现一个equals来比较内容是否相同
总结:
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
Object类是所有类的祖先,一切类默认继承object
package 接口;
//object类
class ePerson{public String name="hello";@Overridepublic String toString() {return "ePerson{" +"name='" + name + '\'' +'}';}
}
class eStudent{}
public class Text5 {public static void func(Object o){System.out.println(o.toString());}public static void main(String[] args) {
// Object o=new Object();ePerson e=new ePerson();
// func(o);func(e);}}
如果不重写tostring输出:java.lang.Object@776ec8df,这是object默认的tostring方法

重写输出:ePerson{name='hello'},这是自己实现的tostring方法(方法重写)
ePerson类:
class ePerson{public String id;public ePerson(String id) {this.id = id;}@Overridepublic String toString() {return "ePerson{" +"id='" + id + '\'' +'}';}
}
直接==比较:
public static void main(String[] args) {ePerson person1=new ePerson("123");ePerson person2=new ePerson("123");System.out.println(person1 == person2);}
这时输出false,为啥不是true呢,对象不同(地址不同)person1,person引用的地址不同

这时我们如果直接调用object类中equals呢?
如果直接调用object类中equals发现:

还是比较地址类似于==
1.在eperson类重写equals方法
@Overridepublic boolean equals(Object o) {ePerson tmp=(ePerson) o;return this.id.equals(tmp.id);}
注意,id是string类型,string也重写了equals方法,返回的equals是string写好的equals来比较内容相同
2.在test中调用equals
System.out.println(person1.equals(person2));
此时返回true
此时自己实现的还有缺陷(忽略了特殊情况),这个比较完整:
@Overridepublic boolean equals(Object o) {if(o==null){return false;}else if(this==o){return true;}else if(!(o instanceof ePerson){return false;}ePerson tmp=(ePerson) o;return this.id.equals(tmp.id);}
解释一下:

object类equals是判断对象内容是否相同
一般自定义的类型都得重写equals方法,来判断内容相同
如果==左右两侧是引用类型变量,比较的是引用变量地址是否相同
上一篇:论《三国演义》中杀曹植的诗
下一篇:关于鱼的成语和歇后语