不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。其中基本数据类型都是不可变数据类型,例如int,如果一个int类型的数据发生改变,那么它指向了内存中的另一个地址,新地址中为更改后的值,但是需要注意的是java缓存了所有-128-127的值。
可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型,当可变数据类型改变时它实际上是更改了内存中的内容。
不可变数据类型:对其修改会产生大量的临时拷贝(需要垃圾回收)
可变数据类型:最少化拷贝以提高效率,可以共享数据
对于可变数据类型在非必须的情况下尽量不要重写这两个函数,使用原始的即可(比较内存是否相同),对于不可变数据类型,在重写equals时一定要重写hashCode否则hashCode不相同时不会继续比较Equals。