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

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值