黑马程序员技术交流社区

标题: 1. Object [打印本页]

作者: 段燚涛    时间: 2015-8-8 14:05
标题: 1. Object
1. Object
Object类是java中所有类的顶级父类。若我们定义的一个类没有显示的使用extends
继承某个类时,默认就是继承自Object的。
1.1. toString()方法

既然Object是所有类的顶级父类,那么在Object中定义的方法 所有的类都具备。其中之一就是toStirng()方法。
String toString():该方法java希望我们重写时返回一个字符串,这个字符串的原则为:用一个字符串来描述当前对象。
Object实现了toString()方法,返回的是当前对象的“句柄”。
格式为:类的完全限定名@hashcode。
因为Object实现的toString()方法不具备什么实际开发意义,所以若我们需要在子类中使用该方法时通常我们会重写它。
1.1.1. String类重写toString()

publicStringtoString(){
returnthis;
}
从源码中我们可以看到,String重写了Object的toString()方法,该方法直接将当前字符串对象自身返回。
1.2. equals()方法

boolean equals():该方法java希望我们重写时返回一个boolean值,表示两个对象间的内容比较是否一致。
Object已经实现了该方法,代码如下:
public boolean equals(Object obj){
return(this== obj);
}
由此看出,实际上Object中重写该方法依旧使用"=="比较,所以当我们在子类中需要比较对象内容时就要重写该方法
1.2.1. 如何重写equals方法

重写equals方法应遵循几个规则:
任何对象与null比较都应返回false
两个对象不属于同一个类时应返回false
同一个对象equals比较应当恒等为true
那么除此之外,两个对象在比较时,应根据具体的业务需求来自行决定对象的哪些属性相同时对象内容相同。
1.2.2. String重写equals()方法

String重写了equals方法,作用是比较两个字符串对象中保存的字符序列是否完全一致。
1.2.3. equals与 == 的区别

"=="是值比较,对于引用类型变量而言,该变量保存的是对象的地址,所以使用"=="比较时,意思为两个变量的地址是否相等,换句话说就是看两个变量引用的是否为同一个对象
equals是内容比较,对于两个引用变量而言,是比较两个变量所引用的对象内容是 否相同。
举个例子:
就好像一对双胞胎,他们是两个独立的个体,是两个对象。所以那么用"=="比较是 false。但是因为他们“长得一样”,所以equals方法比较时true。
我们也可以变相的理解为:"=="是判断是否为同一个,而"equals"是判断像不像




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2