A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jw在路途 中级黑马   /  2014-8-11 21:12  /  1254 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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比较的是地址值。
                         所以,如果你想比较成员变量的值,请重写该方法。



评分

参与人数 2技术分 +1 黑马币 +5 收起 理由
a5702727 + 5 很给力!
格子、 + 1 淡定

查看全部评分

3 个回复

倒序浏览
我在想,这贴是否发错主题了呢 - -

点评

主题是什么  发表于 2014-8-13 21:31
回复 使用道具 举报
哈哈,谢谢楼主~~~这次我淡定了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马