本次介绍经常让你脑子混乱的“对象识别”

对于Java而言,要识别两个对象是否为同一个对象有两种方式:

一是根据内存地址识别(“==”号 识别)

二是根据equals() 、hasCode()方法识别(默认比较内存地址)

第一种情况:同一个session中根据相同查询得到的相同记录

本次介绍经常让你脑子混乱的“对象识别”

 通过session得到的是相同的根据相同id查询到的数据,c1与c2参考的是同一对象

第二种情况:得到一个session对象后关闭session,然后在获得session对象

本次介绍经常让你脑子混乱的“对象识别”

   两次session得到的对象,虽然内容相同,但是内存地址是不同的。

如果你想比较两次得到的数据库中的同一条记录是否相同,必须使用equals()或hasCode()方法:

本次介绍经常让你脑子混乱的“对象识别”

    在比较时复写了equals()方法

其他情况:

本次介绍经常让你脑子混乱的“对象识别”

new对象后,两个对象的地址不同,所以在==比较时显示false,用equlas()方法比较时显示true

大体的对象识别就分为以上几种。