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)

目录
相关文章
|
1月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
1月前
|
数据安全/隐私保护
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
该博客文章通过示例演示了如何使用session对象的`setAttribute`和`getAttribute`方法在不同页面间传递和显示用户的用户名和密码信息,并说明了如何设置会话的有效期。
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
|
1月前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
17 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
1月前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
31 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)
|
1月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
28 5
|
20天前
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
26 0
|
27天前
【Azure Developer】使用PowerShell Where-Object方法过滤多维ArrayList时候,遇见的诡异问题 -- 当查找结果只有一个对象时,返回结果修改了对象结构,把多维变为一维
【Azure Developer】使用PowerShell Where-Object方法过滤多维ArrayList时候,遇见的诡异问题 -- 当查找结果只有一个对象时,返回结果修改了对象结构,把多维变为一维
|
2月前
|
Java
Java中的Object类 ( 详解toString方法 | equals方法 )
Java中的Object类 ( 详解toString方法 | equals方法 )
|
3月前
|
Java
【Java】Object类简单解析
【Java】Object类简单解析
38 1
|
2月前
|
开发者 Python
【Python】已解决:TypeError: a bytes-like object is required, not ‘int’
【Python】已解决:TypeError: a bytes-like object is required, not ‘int’
69 0