谈一谈 “==” 跟 “equals” 的区别

时间:2021-05-03 15:55:51

1)对于==,比较的是值地址是否相等

  如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

  如果作用于引用类型的变量,则比较的是所指向的对象的地址

 

2)equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同

  对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是两个对象的值。如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

 

当equals为true时,==不一定为true。

 

Java中的四种引用及其应用场景是什么?

  强引用: 通常我们使用new操作符创建一个对象时所返回的引用即为强引用

  软引用: 若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap

  弱引用: 若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收

  虚引用: 虚引用是Java中最“弱”的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。