== 的作用:
基本类型:比较值是否相等
引用类型:比较内存地址值是否相等
equals 的作用:
引用类型:默认情况下,比较内存地址值是否相等。可以按照需求逻辑,重写对象的equals方法。
误区大解释:
引用对象和值对象,我一直以为引用对象是类,值对象是字段。原来不是这样,是以意义区分,不是数据结构区分。
引用对象和值对象区分,像在现实生活中可以抽象为一个事物,有一定的行为,比如Aniaml类。
值对象是日期Date类 Money类这种完全由数据值来定义的值类。
类本身的概念是单纯储值,另一个是有行为。
值对象,强调值相同,只要是调用同一个对象的同一个查询函数,都应该获得一样的结果,换言之判断两个对象是否相等,是根据值来判断,就是根据equals hashco de是否相等,通过重写两个函数来比较。
所以每一个值对象里面维护了一个值,值对象不像引用对象,修改了值对象,所有引用值对象的都地方都自动修改,`值对象是不可变得`,里面只维护当前一个值。如果想要修改一个值对象的值,那就新写一个值对象将想修改的值放进去。当频繁有这种需要引用地方同步修改,不如就变为引用对象了
值对象如果被维护在一个类里,每一个类都有一个自己的值对象在栈里。引用对象可以是多个类维护一个。