美文网首页
Object方法

Object方法

作者: 小虫虫奇遇记 | 来源:发表于2020-08-11 10:23 被阅读0次

equals 和 “==”区别?

== 对于基本类型数据,比较的是值是否相等,对于对象类型,比较的是对象的引用地址是否相同。
Object的equals()方法,也比较的是对象的引用地址是否相等。但大多数类会自重写equals方法,使得比较的是对象内容,比如String重写后,比较的就是对象的值是否相等。

    // Object.java
    public boolean equals(Object obj) {
        return (this == obj);
    }
  • 如果是包装类之间的“==”运算,在没有算数运算的情况下不会自动拆箱,比较的是对象地址。遇到算数运算时会进行自动拆箱,比较数值。
Integer a = 3;
Integer b = 3;
a == b;true
a.equals.b;true

//超过[-128,127]区间就创建新的对象,没超过取的缓存
Integer a = 300;
Integer b = 300;
a == b;false
a.equals.b;false
  • 如果是包装类和基本类型之间的"=="比较,包装类会拆箱后比较
int b = 3;
a==b;a 会自动拆箱,返回true
  • 包装类的equals(Object)方法是不处理数据转型关系的,如Long.equals(Integer.value(3)),类型不一致就会返回false。

wait 和 notify

可用于线程间通信,必须用在synchronized()方法块中才有效。wait方法会自动释放对象锁,直到有nofity调用后才会重新获得对象锁执行线程。

clone()

  • 必须实现 Clonable接口
    clone默认浅拷贝(super.clone()),意思是对象引用不会被拷贝,还指向原来的对象地址,修改clone对象的引用对象,原对象的引用对象也被修改。如果需要深拷贝,需要把对象的引用也拷贝一份。这样修改引用对象则不会影响原引用对象的内容。
  @NonNull
    @Override
    public Object clone() throws CloneNotSupportedException {
        Person person = new Person();
        person.name = this.name;
        person.age = this.age;
        //对象的引用也要拷贝,才能实现深拷贝
        person.course = (Course) this.course.clone();
        return person;
    }

参考:https://blog.csdn.net/xinghuo0007/article/details/78896726

finalize

  1. GC时才调用对象的finalize方法 做一些清理工作
    垃圾回收器只知道那些显式地经由new分配的内存空间,之所以要使用finalize(),是存在着垃圾回收器不能处理的特殊情况。如果使用a. c++的malloc方法申请的内存 b. 打开的文件资源,这些资源不属于垃圾回收器的回收范围, 需要在finalize方法中清理进行手动释放。
  2. 也可以在finalize重新赋予对象强引用使其不用被回收

相关文章

  • Object的标准库

    Object 的静态方法 所谓的Object静态方法就是部署在Object对象本身的一些方法 Object.key...

  • Object 对象

    分为 Object 静态方法和Object 实例方法 静态方法就是直接定义在Object 对象上 实力方法是定义在...

  • Object类中常见的方法

    一.Object类中的toString()方法 object 默认方法 toString方法,toString()...

  • JavaScript的标准库

    1. Object对象 静态方法 所谓“静态方法”,是指部署在Object对象自身的方法。 Object.keys...

  • 前端理论面试-数据拷贝

    Object.assign()方法、slice()方法和concat()方法的拷贝 Object.assign()...

  • 标准库

    Object 对象 1. Object静态方法 (1) 对象属性模型的相关方法Object.keys() : 获取...

  • Object上的方法

    Object 对象 1. Object静态方法 (1) 对象属性模型的相关方法Object.keys() : 获取...

  • 静态方法

    1、全部静态方法 object className {} 2、部分静态方法 companion object { ...

  • 对象方法 2019-12-15

    Array对象下的方法 String对象下的方法 some()方法 Object.keys()方法 Object....

  • 02-JavaScript常见的对象方法

    Object 常用方法 Object.entries() Object.entries(value : any) ...

网友评论

      本文标题:Object方法

      本文链接:https://www.haomeiwen.com/subject/qinprktx.html