Object 万类之祖

1. 概述

  • Object类是所有类型的顶层父类,所有类型的直接或者间接的父类;所有的类型中都含有Object类中的所有方法。

  • 随意定义一个类型,不手动显式定义其父类,那么这个类的父类就是Object类。

  • Object类的构造方法:Object()

    • 可以自己创建对象

    • 让子类访问,所有子类都会直接或者间接的访问到这个顶层父类的构造方法

    • Object类在执行构造方法时,不去访问自己的父类,因为没有父类了

2. getClass()

  • 返回当前对象的运行时类

  • 目前记住其中Class类型中有一个getName方法,可以返回当前类型的全类名

  • 示例:

    public class Demo {
        public static void main(String[] args) {
            Demo demo = new Demo();
            System.out.println(demo.getClass());
        }
    }

 

3. hashCode()

  • 根据对象的情况,生成的一个整数,就是哈希码值。生成数字的方法就是hashCode方法。

  • 示例:

    public class Demo {
        public static void main(String[] args) {
            Demo demo = new Demo();
            System.out.println(demo.hashCode());
    
            demo = new Demo();
            System.out.println(demo.hashCode());
        }
    }

    4. toString()

  • 对象返回一个地址值的字符串,没有什么意义。

  • 打印当前对象成员变量的值

  • 示例:

public class Animal {
    String username;
    String password;

    @Override
    public String toString() {
        return "Animal{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

5 equals()

  • 用于比较两个对象是否相等的方法,比较的就是“调用者”和“参数”这两个对象(boolean equals(Object obj))

  • 性质:

    • 自反性:自己和自己肯定是相等,A.equals(A);肯定是true。

    • 对称性:A和B相等,那么B就和A相等。A.equals(B)为true,那么B.equals(A)也为true。

    • 传递性:A.equals(B)为true,并且B.equals(C)为true,那么A.equals(C)也为true。

  • 在Object类型中,是比较两个对象的地址值是否相同。

  • 实际使用中,比较两个内存地址没有意义,一般会重写equals方法,比较值是否相同。

  • 示例:

### 5 equals()

* 用于比较两个对象是否相等的方法,比较的就是“调用者”和“参数”这两个对象(`boolean equals(Object obj)`)

* 性质:

  * 自反性:自己和自己肯定是相等,A.equals(A);肯定是true。
  * 对称性:A和B相等,那么B就和A相等。A.equals(B)为true,那么B.equals(A)也为true。
  * 传递性:A.equals(B)为true,并且B.equals(C)为true,那么A.equals(C)也为true。

* 在Object类型中,是比较两个对象的地址值是否相同。

* 实际使用中,比较两个内存地址没有意义,一般会重写`equals`方法,比较值是否相同。

* 示例:

 

6.== 与 equals的区别

  • 相同点:都是用来比较两个变量是否相等

  • 不同点:

    • 比较内容不同:

      • ==:比较任意数据类型,内置数据类型和引用数据类型

      • equals:比较引用数据类型

    • 比较规则不同:

      • ==:内置数据类型比较值,引用数据类型比较内存地址

      • equals:比较内存地址,如重写则按照重写规则进行比较

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值