黑马程序员技术交流社区
标题: object类和它的方法概述: [打印本页]
作者: jw在路途 时间: 2014-8-11 21:12
标题: object类和它的方法概述:
本帖最后由 jw在路途 于 2014-8-12 11:36 编辑
老师讲解加上个人理解的小结:
Object类与toString()方法及 equals 与 == 两者用途的理解;
Object类:
是类层次结构的根类。每个类都使用 Object 作为超类(所有的类都 直接或者间接的继承自该类)。所有对象(包括数组)都实现这个类的方 法。
//所以当子类需要完成某些特定的功能时,建议重写父类的方法以达到需求。
下面是个人画的草图,乐呵乐呵,见笑了:
Object类中的常见方法:
A:public String toString(): 返回对象的字符串表现形式。
输出语句直接输出对象的名称的时候,其实是调用了该对象的toString()方法。
而该方法默认情况下输出的是类名@哈希值的十六进制。 、
例如:
public class StudentDemo {
public static void main(String[] args) {
Student s = new Student();
// System.out.println(s); // cn.itcast_01.Student@75f10df7 // 地址值的组成
// System.out.println(s.toString());// cn.itcast_01.Student@75f10df7 // 返回s(地址值)的字符串表现形式
}
}
建议重写。
由上可看出:
默认情况下,返回的是类名+@+十六进制的哈希值组成,意义不大。
所以需要重写该方法。
怎么重写?
a:手动式:
//你想比较对象的成员变量,只需要比较每一个成员即可。
//如果是基本类型,用 ==,如果是引用类型,用那个引用类型本身的equals()。
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof Teacher) {
Teacher t = (Teacher) obj;
return this.name.equals(t.name) && this.age == t.age;
}
return false;
b:自动式 :
自动生成(快捷功能)
它的值等价于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Integer:
public static String toHexString(int i)
Object类中的常见方法:
B:public final Class getClass():返回的是字节码对象,反射内容。
C:public int hashCode():返回对象的哈希值。这个值不是实际的地址值,但是可以理 解为地址值。
D:protected void finalize():被对象的垃圾回收器调用,用于回收垃圾的。
E:public boolean equals(Object obj)
==的作用:
比较基本类型:比较的是基本类型的值是否相同。
比较引用类型:比较的是引用类型的地址值是否相同。
equals();
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
默认情况下,Object类的equals比较的是地址值。
所以,如果你想比较成员变量的值,请重写该方法。
作者: jw在路途 时间: 2014-8-12 13:49
我在想,这贴是否发错主题了呢 - -
作者: jw在路途 时间: 2014-8-13 20:56
哈哈,谢谢楼主~~~这次我淡定了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |