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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:55   1561   0

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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP