Object类的应用概述2

本文详细介绍了Java中四个关键的方法:equals用于比较对象相等性,可由子类重写;getClass返回运行时类对象,为最终方法;hashCode返回对象的哈希值,通常不需重写;clone方法创建对象副本,需要实现Cloneable接口。通过实例展示了这些方法的使用和效果。
摘要由CSDN通过智能技术生成

三:equals方法

equals用来判断给定的对象是否与当前对象相等

public boolean equals(Object obj){
     return(this == obj)
}

如果当前对象与obj相等则返回true

如果当前对象与obj不相等则返回false

equals方法可以被子类重写,从而改变具体算法

实体类:

package com.entity;

public class Employee {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Employee(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public Employee() {
    }

    @Override
    public boolean equals(Object obj) {
        Employee employee = (Employee) obj;
        return this.getId().equals(employee.getId())?true:false;
    }
}

测试类:

package com.test;

import com.entity.Employee;

public class Test3 {
    public static void main(String[] args) {

        Employee employee1 = new Employee("012345","喜羊羊");
        Employee employee2 = new Employee("012345","懒羊羊");
        boolean bool= employee1.equals(employee2);
        System.out.println(bool?"两个对象id是相同的":"两个对象id是不相同的"); //两个对象id是相同的
    }
}

四:getclass方法

getclass方法返回当前对象的运行时类(class)对象

public final native Class<?>getClass();

此方法是个终极本地方法,不允许子类进行重写

五.hashCode方法

hashCode方法返回该对象的int类型哈希值

public native int hashCode();

此方法为提高哈希表的性能而支持,通常在非特殊情况下不必要重写此方法

package com.test;

import com.entity.Users;

public class Test4 {
    public static void main(String[] args) {
        Users u0 = new Users("no8888","懒洋洋",8);
        Users u1 = u0;
        System.out.println(u0.equals(u1));//true
        System.out.println(u0.hashCode());//23934342
        System.out.println(u1.hashCode());//23934342
        System.out.println(new Users().hashCode());//22307196

    }
}

六.clone方法

clone方法返回当前对象的一个副本

protected native Object clone() throws CloneNotSupportedException;

被克隆的对象与当前对象不具有同一个引用,但是具有完全相同的对象属性,欲克隆当前对象则当前对象所属类应实现Cloneable接口

实体类:

package com.entity;

public class Employee implements Cloneable{
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Employee(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public Employee() {
    }

    @Override
    public boolean equals(Object obj) {
        Employee employee = (Employee) obj;
        return this.getId().equals(employee.getId())?true:false;
    }

    @Override
    public Employee clone() throws CloneNotSupportedException {
        System.out.println("开始克隆对象");
        return (Employee) super.clone();
    }
}

测试类:

package com.test;

import com.entity.Employee;

import java.util.UUID;

public class Test5 {
    public static void main(String[] args) {
        Employee employee = new Employee(UUID.randomUUID().toString(),"喜羊羊");
        try {
            Employee cloneEmp = employee.clone();
            System.out.println("当前对象与克隆对象是否相等"+(employee==cloneEmp));//当前对象与克隆对象是否相等false
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值