在Java中,为什么在比较可变对象时建议使用equals()?
我读到了 通常我们使用equals()来比较不可变对象,其中=用于可变对象 我知道equals和“==”之间的区别,但是为什么对于不可变的对象更喜欢使用equals呢?为什么对可变对象使用“==”?因为在我的逻辑中,当我想要比较两个对象(比较状态,而不是标识)时,为什么不建议使用equals()?在Java中,为什么在比较可变对象时建议使用equals()?,java,equals,immutability,mutable,Java,Equals,Immutability,Mutable,我读到了 通常我们使用equals()来比较不可变对象,其中=用于可变对象 我知道equals和“==”之间的区别,但是为什么对于不可变的对象更喜欢使用equals呢?为什么对可变对象使用“==”?因为在我的逻辑中,当我想要比较两个对象(比较状态,而不是标识)时,为什么不建议使用equals()?equals始终用于比较对象所持有的值。它用于比较不可变对象(如String或Integer或可变对象(如List或Map等)的值 当使用equals比较两个对象的相等性时,不存在可变或不可变对象的问题
equals
始终用于比较对象所持有的值。它用于比较不可变对象(如String
或Integer
或可变对象(如List
或Map
等)的值
当使用equals
比较两个对象的相等性时,不存在可变或不可变对象的问题
另一方面,=
符号纯粹比较两个引用是相同的还是指向相同的对象
希望这有帮助 你在哪里读到的?是的,那完全是废话。你应该对你读到的内容更加小心。显然,如果您没有发现所写内容有任何错误,您就不理解
==
和equals()
之间的区别。=
在与对象一起使用时比较引用。不管对象是可变的还是不可变的,我在课堂幻灯片上读到了。我知道“==”用于引用相等,这就是为什么我在这里问它,因为我没有理解这句话背后的逻辑。你需要问你的老师这句话的意思是什么,因为它对于Java来说绝对是垃圾。即使我考虑允许操作符重载的语言也是似是而非的。