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中是不存在内存泄漏的