Object祖先类、equals方法、int hashcode()方法、复制

简介: Object祖先类:                       祖先类,对象相同的属性方法。                       基本配置、对象的基本配置,只要是类就是object的子类                       统一的相同方法、所有类都可以继承它、任何对象都是可以转换成它。

Object祖先类:

                       祖先类,对象相同的属性方法。

                       基本配置、对象的基本配置,只要是类就是object的子类

                       统一的相同方法、所有类都可以继承它、任何对象都是可以转换成它。

                       统一配置类、统一规划类、后期在进行编写、统一了所有对象所有相同的方法。

                       boolean、equals(object)对象和对象之间比较由自己开发、比较的是地址

                       如果自己写、用原有的equals比较的不是对象的地址比的是字符串、如果不是一个地址相同的字符串,也会是true。

                       

                       object是所有创建类的父类、父类可以转换成子类                       


 public boolean equals(Object obj) {//这是我们写的
        if (this == obj) {//请问您是不是一个类
            return true;
        }
        //请问 obj 对象 是不是Student 创建的实例
        if(obj instanceof  Student){//因为祖先类是所有类的模板、只要创建类就会加载祖先类
            Student student=(Student)obj;//将传进来的模板转成Student
            if(this.age==student.age &&
                    (this.name==student.name||this.name.equals(student.name)) &&
                    (this.sex==student.sex||this.sex.equals(student.sex)) &&
                    (this.address==student.address||this.address.equals(student.address))
            ){
                return true;
            }
        }
        return false;
    }
——————————————————————————————————————————————————————
@Override
    public boolean equals(Object o) {//这是idea生成的
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Student student = (Student) o;

        if (age != student.age) return false;
        if (name != null ? !name.equals(student.name) : student.name != null) return false;
        if (sex != null ? !sex.equals(student.sex) : student.sex != null) return false;
        return address != null ? address.equals(student.address) : student.address == null;
    }

int hashcode()方法 返回的值是int类型的

通过算法给出两个唯一值。

但这两个值不一定一致(几率很小)

但内容一致两个值绝对相同

因为他是那数值做的比较


对象变量之间赋值,只是给地址赋值

处基本数据类型、操作的都是地址

相同的类、不同对象

唯一不同的就是属性值


复制:

         复制复制在类里面复制比较彻底,私有方法也可以复制

         外界类无法访问本地类的私有属性 

         浅克隆,类中有一个对象引用别的对象的,给自己的属性。

         但它克隆不会再克隆引用的对象,它只会克隆当前类中属性、再引用类中别引用的对象(被克隆引用的方法或属性)


public class T4 {
    String name;
    int age;
    String NianLing;

    protected Object clone() throws CloneNotSupportedException {
        T4 t4 = new T4();
        t4.name = name;
        t4.age = age;
        t4.NianLing = NianLing;
        return t4;
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        T4 t4 = new T4();
        t4.NianLing = "哈哈";
        t4.age=12;
        t4.name="小敏";
        T4 t41=(T4)t4.clone();//这里的T4指的是将克隆的t4转换成T4
    }
}

boolean equals(Object):

                                        对象和对象之间的比较,由自己开发

int hashCode():

                          switch ?? 为什么能支持字符串呢?

                          code值不一样 对象数据肯定不同 一样的code不一定是一样的内容

                          code是一个int数值,以后我们可以使用此数组定位置,或者做个快速搜索

Object clone():

                克隆 对象

                浅克隆

                深克隆

                对象变量之间赋值 只是地址的给值

finalize():
               垃圾回收提醒方法

               只要没用引用的对象 就会回收掉,但是回收不是立即调用

               System.gc()  促进它回收

getClass():
              反射机制学习 得到 Class 对象

notify():
              线程才能学习得到

              notifyAll()

wait():

             线程才能学习得到

             wait(long)

             wait(long, int)

目录
相关文章
|
23天前
|
JavaScript 前端开发
`Object.create()` 方法的参数
【10月更文挑战第29天】`Object.create()` 方法的参数提供了多种创建对象和控制对象属性及继承关系的方式,开发人员可以根据具体的需求灵活运用,以实现更高效、更符合设计要求的对象创建和继承机制。
|
22天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
75 4
|
23天前
|
设计模式
在实际开发中,什么时候应该使用 `new` 关键字,什么时候应该使用 `Object.create()` 方法?
【10月更文挑战第29天】`new` 关键字适用于创建具有特定类型和初始化逻辑的对象实例,以及实现基于原型链的继承;而 `Object.create()` 方法则适用于基于现有对象创建相似对象、避免构造函数的副作用、创建具有特定原型链的对象等场景。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象,以实现更高效、更灵活的代码结构。
|
2月前
|
机器学习/深度学习 算法
让星星⭐月亮告诉你,HashMap之tableSizeFor(int cap)方法原理详解(分2的n次幂和非2的n次幂两种情况讨论)
`HashMap` 的 `tableSizeFor(int cap)` 方法用于计算一个大于或等于给定容量 `cap` 的最小的 2 的幂次方值。该方法通过一系列的无符号右移和按位或运算,逐步将二进制数的高位全部置为 1,最后加 1 得到所需的 2 的幂次方值。具体步骤包括: 1. 将 `cap` 减 1,确保已经是 2 的幂次方的值直接返回。 2. 通过多次无符号右移和按位或运算,将最高位 1 后面的所有位都置为 1。 3. 最终加 1,确保返回值为 2 的幂次方。 该方法保证了 `HashMap` 的数组容量始终是 2 的幂次方,从而优化了哈希表的性能。
33 1
|
2月前
|
存储 数据采集 数据处理
Pandas中批量转换object至float的高效方法
在数据分析中,常需将Pandas DataFrame中的object类型列转换为float类型以进行数值计算。本文介绍如何使用`pd.to_numeric`函数高效转换,并处理非数字值,包括用0或平均值填充NaN值的方法。
59 1
|
2月前
|
Java 索引
Object有哪些常用方法
掌握这些方法不仅能够帮助你编写出更加健壮和高效的Java代码,还能加深对面向对象编程概念的理解。在实际开发中,合理利用 `Object`类提供的方法能够有效提升代码的可读性、可维护性和性能。
46 0
|
2月前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
26 0
|
4月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
4月前
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
55 0
|
4月前
|
数据采集 API TensorFlow
简化目标检测流程:深入探讨TensorFlow Object Detection API的高效性与易用性及其与传统方法的比较分析
【8月更文挑战第31天】TensorFlow Object Detection API 是一项强大的工具,集成多种先进算法,支持 SSD、Faster R-CNN 等模型架构,并提供预训练模型,简化目标检测的开发流程。用户只需准备数据集并按要求处理,选择预训练模型进行微调训练即可实现目标检测功能。与传统方法相比,该 API 极大地减少了工作量,提供了从数据预处理到结果评估的一站式解决方案,降低了目标检测的技术门槛,使初学者也能快速搭建高性能系统。未来,我们期待看到更多基于此 API 的创新应用。
38 0