JAVA_SE基础——60.初识Object

java是面向对象的语言,核心思想:找适合 的对象作适合 的事情:

方式一:自定义类,而后经过自定义的类建立对象。

方式二:sun提供了不少的类给我使用,咱们只须要认识这些类,咱们就能够经过这些类建立对象了。

Object类是全部类的终极父类。 任何一个类都继承了Object类。

 Object:全部类的根类。
    Object是不断抽取而来,具有着全部对象都具有的共性内容。
html

class Person{
      private int age ;
      Person(int age){
             this.age = age;
      }
}

class Demo{
}

class ObjectDemo{
       public static void main(String[] args){
            Person p1 = new Person(20);
            Person p2 = new Person(20);
            Person p3 = p1;
      
            Demo d = new Demo();

            System. out.println(p1 == p2);//false
            System. out.println(p1.equals(p2));//false
            System. out.println(p1.equals(p3));//true
            System. out.println(p1.equals(d));//false
      }
}
运行结果:

false
false
true
false


java

上面都是比较内存地址,而没有比较年龄,然而须要比较年龄则须要重写equals方法~this

P.S.
    ==以及Object类的equals方法默认都是根据对象的哈希值判断两个对象是否相等。
    能够经过覆盖Object的equals方法来重写比较规则。

spa

class Person{
       private int age ;
       Person( int age){
             this.age = age;
       }
       //比较Person的年龄,是不是同龄人
       //通常都会覆盖此方法,根据对象的特有内容,创建判断对象是否相同的依据。
       public boolean equals(Object obj){
             if(!(obj instanceof Person))
                   throw new ClassCastException("类型错误");
             Person p = (Person)obj;
             return this .age == p.age;
      }
}

class ObjectDemo{
       public static void main(String[] args){
            Person p1 = new Person(20);
            Person p2 = new Person(20);

            System. out.println(p1.equals(p2));
      }
}
运行结果:

ture

htm

class Person{
      private int age ;
      Person(int age){
             this.age = age;
      }
      public int hashCode(){
             return age ;
      }
}

class ObjectDemo{
       public static void main(String[] args){
            Person p1 = new Person(20);

            System. out.println(p1);
            System. out.println(p1.getClass().getName() + " $ " + Integer.toHexString(p1.hashCode()));
      }
}
运行结果:

Person@21对象

Person $ 21

继承

System. out.println(p1.getClass().getName() + " $ " + Integer.toHexString(p1.hashCode()));
为了方便初学者理解上面的代码,接下来分别对其中用到的方法进行解释,具体以下:

1.getClass().getName()表明返回对象所属类的类名,便是Person。内存

2.hashCode()表明返回该对象的哈希值。 (也能够把哈希码理解成是对象的内存地址)字符串

3.Integer.toHexString(p1.hashCode())表明将对象哈希值用16进制表现。get

其中,hashCode()是Object类中定义的一个方法,这个方法将对象的内存地址进行哈西运算,返回一个int型的哈希值


toString() : 返回该对象的字符串表示,返回一个字符串用于描述该对象的。 (返回的字符串表示: 完整类名+@+ 对象的哈希码)



交流企鹅:654249738,和自学者交流群:517284938

相关文章
相关标签/搜索