Java中的Object类中的常用方法

本文深入解析Java中Object类的功能与方法,包括hashCode(), getClass(), toString(), 和equals()的使用及重写技巧,帮助读者理解其在Java编程中的核心作用。
摘要由CSDN通过智能技术生成

API和Object

  • API(Application Programming Interface)应用程序编程接口.
  • Java API 就是Java提供的类这些类将底层的实现封装起来
  • Object类 是所有类的根类,所有类都直接或者间接的继承自该类.
  • 构造方法 public Object()

Object类中的hashCode()方法。
   pubic int hashCode()

    返回该对象的哈希码值,默认情况下会根据对象的地址值计算
   不同对象的hashCode()一般不会相同,但是同一个对象的hashCode()值肯定是相同的

    不是对象的实际地址值,乐意理解为逻辑地址值

package org.org.baidu;

public class Myclass7 {
    public static void main(String[] args) {
        //Object是所有类的根类,所有类直接或者间接的继承自该类
        Object o1 = new Object();
        int i = o1.hashCode();
        Object o2 = new Object();
        int i1 = o2.hashCode();
        System.out.println(i);//返回该对象的哈希码值,不用的对象的哈希码值是不一样的
        System.out.println(i1);
    }
}

运行结果为:

356573597
1735600054

Object类中的getClass()方法。
  public final Class getClass()
  返回该Object类运行时类,可以通过Class中的public String getName()获取对象的真实类的全名称

package org.org.baidu;

public class Myclass7 {
    public static void main(String[] args) {
        //Objects是所有类的根类,所有类直接或者间接的继承自该类
        //Object.class 字节码文件加载进内存-----JVM就会为Object.class文件创建一个对象。该对象的字节码文件只会创建一份
        Object o1 = new Object();
        Class aClass = o1.getClass();
        Object o2 = new Object();
        Class aClass1 = o2.getClass();
        System.out.println(o1==o2);
        System.out.println(aClass==aClass1);
        System.out.println(aClass);
        System.out.println(aClass1);



    }
}

运行结果为:

false
true
class java.lang.Object
class java.lang.Object

Object类中的toString()方法。
   public String toString()
源代码
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
等价于
getClass().getName() + '@' + Integer.toHexString(hashCode())
直接输出new出来的是他的地址,可以重写他的方法返回该类的所有成员变量。


package org.baidu1;

public class Mytest {


    public static void main(String[] args) {
        Dog dog = new Dog("小花",23);
        System.out.println(dog);

    }
}
class Dog{
     private String name;
     private  int age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //重写String方法
    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

运行结果为:

Dog{name='小花', age=23}

Object类中的equals()方法。
源代码
public boolean equals(Object obj) { return (this == obj); }
默认情况下比较的是对象的引用是否相同。一般重写该方法。

package org.baidu1;

import java.util.Objects;

public class Mytest {
    public static void main(String[] args) {
        Dog dog = new Dog("小花",23);
        Dog dog1 = new Dog("小花",23);
        //判断的是他们的引用,是不相等的
        System.out.println(dog==dog1);
        //类型转换异常
        boolean a = dog.equals(new Student());
        System.out.println(a);
        boolean b=dog.equals(dog1);
        System.out.println(b);

    }

}

class Dog {
    private String name;
    private int age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        //判断如果是和自己比较就返回true
        if (this == o) {
            return true;
        }
        // if (!(obj instanceof Student)) {
        //            return false;
        //        }用instanceof来判断是否是同一类
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Dog dog = (Dog) o;
        return age == dog.age &&
                Objects.equals(name, dog.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

class Student {

}

运行结果为:

false
false
true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值