Object常用方法

73 阅读2分钟

eqluas

  • 默认地址⽐较
    如果没有重写equals方法,那么Object类中默认进行**==**运算符 的对象地址比较,只要不是同一个对象,结果必然是false.

  • 对象内容⽐较
    如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可覆盖重写equals方法

toString()

  • 返回该对象的字符串表示,该字符串内容就是对象的类型+@+内存地址值
  • 如果不希望使⽤toString⽅法的默认⾏为,则可以对它进⾏覆盖重写

hashCode

  • native方法,用于返回对象的哈希吗

clone

  • 深克隆:复制对象 是复制一份全新的,属性内容一致的对象,但内存中的地址值一定不一样
  • 浅克隆:复制引用

getClass()

  • 返回此 Object 的运行时类
  • Java的引用变量有两个类型,编译时类型和运行时类型。
    1.编译时类型由声明该变量时使用的类型决定。(=左边)
    2.运行时类型由实际赋给该变量的对象决定。(=右边)
  • object.作用:对象通过该方法,可以获得对应的类的字节码对象
    xx.java ->xx.class ->JVM
  • 类加载-方法区-字节码对象
    加载:类只加载一次,所以方法区中类型信息只有一个,对应的字节码对象都是同一个。
  • 加载触发的条件:
    1.实例化对象 new
    2.静态方法/静态变量
    3.使用子类,父类必须先加载
    4.class.forName(“java.lang.Sting”)–手动加载指定的类
    5.Strin.class->获得字节码对象

wait(),wait(long timeout),wait(long timeout, int nanos)

  • native 方法,并且不能重写。
    作用是:暂停线程的执行。
    注意:sleep() 方法没有释放锁,wait释放了锁。timeout 是等待时间。nanos参数,表示额外的时间

notify

  • native方法,并且不能重写。
    唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)
    如果有多个线程在等待只会唤醒一个。

notifyAll

  • native方法,并且不能重写。
    作用跟 notify() 一样,只不过会唤醒在此对象监视器上等待的所有线程,而不是一个线程。

finalize

  • GC时会调用。GC垃圾回收机制
  • 内存溢出:在内存中没有存储的地方
    内存泄漏:内存被无效对象占用
    一个对象分配内存之后,在使用是没有来得释放,导致一直在占用内存,使得实际内存变少
    GC 垃圾回收机制,定时清理内存
    1.在程序运行时自动启动,不定时回收内存中标记的垃圾(没有引用的对象,会被内存标记为垃圾)
    2.GC是自动调用的,也可以手动调用GC -System.gc();
    总结:原则上java中是不存在内存泄漏的