Object类

Object类

概述
	类层次结构的根类
	所有类都直接或者间接的继承该类
构造方法
	public Object()
	子类的构造方法默认访问的是父类的无参构造方法
Object类中的方法
    public boolean equals(Object obj)
    比较两个对象是否相等
    public int hashCode()
    返回对象的int类型的哈希码值
    public String toString()
    打印对象的信息
    protected void finalize() 
    垃圾销毁
    public final Class getClass()
    表示此对象的运行时类的类对象

equals()方法

public boolean equals(Object obj) {
	return (this == obj);
}
equals()方法判断其他某个对象是否与此对象相等
equals()方法默认是比较对象的引用是否相同
一般需要重写equals()方法

==和equals()的区别

==
	==是一个比较运算符
	即可以判断基本数据类型 还可以判断引用数据类型
	判断基本数据类型(判断值是否相等)
	判断引用数据类型(判断地址是否相等)
equals()
	equals()是Object类中的方法
	只能判断引用数据类型(判断地址是否相等)
	一般需要重写equals()方法
public class EqualsExercise03 {
    public static void main(String[] args) {
        int it = 65;
        float fl = 65.0f;
        System.out.println("65和65.0f是否相等?" + (it == fl));//true
        char ch1 = 'A';
        char ch2 = 12;
        System.out.println("65和'A'是否相等?" + (it == ch1));//true
        System.out.println("12和ch2是否相等?" + (12 == ch2));//true
        String str1 = new String("hello");
        String str2 = new String("hello");
        System.out.println("str1和str2是否相等?" + (str1 == str2));//false
        System.out.println("str1是否equals str2?" + (str1.equals(str2)));//true
    }
}

重写equals()方法

public class Rewrite {
    public static void main(String[] args) {
        Dog dog1 = new Dog("jack", 1);
        Dog dog2 = new Dog("jack", 1);
        System.out.println(dog1.equals(dog2)); //true
    }
}
class Dog{
    //属性
    private String name;
    private int age;
    
    //重写Object的equals方法
    //如果两个Dog对象的各个属性值都一样 则返回true 否则false
    @Override
    public boolean equals(Object obj) {
        //判断比较的两个对象是同一个对象 则直接返回true
        if (this == obj){
            return true;
        }
        //instanceof类型判断
        if (obj instanceof Dog){//是Dog类才开始判断
            //向下转型 需要obj的各个属性
            Dog dog = (Dog) obj;
            return this.name.equals(dog.name) && this.age == dog.age;
        }
        return false;
    }
    
    //构造方法
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //get/set方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

hashCode()方法

public int hashCode() {}
hashCode()方法返回该对象的哈希码值
不同对象的哈希码值不同 同一个对象的哈希码值一定相同
hashCode()方法的哈希码值是根据对象的地址来计算
public class HashCode {
    public static void main(String[] args) {
        Cat cat1 = new Cat();
        Cat cat2 = new Cat();
        System.out.println("cat1的hashCode值:" + cat1.hashCode());
        System.out.println("cat2的hashCode值:" + cat2.hashCode());
    }
}
/*
cat1的hashCode值:460141958
cat2的hashCode值:1163157884
*/
class Cat{}

toString()方法

public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回该对象的字符串表示
一般需要重写toString()方法
public class ToString {
    public static void main(String[] args) {
        AA aa = new AA();
        System.out.println(aa);//aa相当于aa.toString()
        //org.object_.toString_.AA@1b6d3586
    }
}
class AA{ }

重写toString()方法

public class ToString02 {
    public static void main(String[] args) {
        AAA aaa = new AAA("jack", 12);
        System.out.println(aaa);//aaa相当于aaa.toString()
        //AAA{name='jack', age=12}
    }
}
class AAA{
    //属性
    private String name;
    private int age;
    //重写toString()方法
    @Override
    public String toString() {
        return "AAA{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    //构造方法
    public AAA(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //get/set方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

finalize()方法

protected void finalize() throws Throwable
当垃圾收集确定没有对对象的引用时,由对象上的垃圾收集器调用

getClass()方法

 public final native Class<?> getClass();
 返回此Object的运行时的类
 getClass()方法可以获取对象的真实类的全名称
public class GetClass {
    public static void main(String[] args) {
        BB bb = new BB();
        System.out.println(bb.getClass());
        //class org.object_.getClass_.BB
    }
}
class BB{}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值