Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,为什么在比较可变对象时建议使用equals()?_Java_Equals_Immutability_Mutable - Fatal编程技术网

在Java中,为什么在比较可变对象时建议使用equals()?

在Java中,为什么在比较可变对象时建议使用equals()?,java,equals,immutability,mutable,Java,Equals,Immutability,Mutable,我读到了 通常我们使用equals()来比较不可变对象,其中=用于可变对象 我知道equals和“==”之间的区别,但是为什么对于不可变的对象更喜欢使用equals呢?为什么对可变对象使用“==”?因为在我的逻辑中,当我想要比较两个对象(比较状态,而不是标识)时,为什么不建议使用equals()?equals始终用于比较对象所持有的值。它用于比较不可变对象(如String或Integer或可变对象(如List或Map等)的值 当使用equals比较两个对象的相等性时,不存在可变或不可变对象的问题

我读到了

通常我们使用equals()来比较不可变对象,其中=用于可变对象

我知道equals和“==”之间的区别,但是为什么对于不可变的对象更喜欢使用equals呢?为什么对可变对象使用“==”?因为在我的逻辑中,当我想要比较两个对象(比较状态,而不是标识)时,为什么不建议使用equals()?

equals
始终用于比较对象所持有的值。它用于比较不可变对象(如
String
Integer
或可变对象(如
List
Map
等)的值

当使用
equals
比较两个对象的相等性时,不存在可变或不可变对象的问题

另一方面,
=
符号纯粹比较两个引用是相同的还是指向相同的对象



希望这有帮助

你在哪里读到的?是的,那完全是废话。你应该对你读到的内容更加小心。显然,如果您没有发现所写内容有任何错误,您就不理解
==
equals()
之间的区别。
=
在与对象一起使用时比较引用。不管对象是可变的还是不可变的,我在课堂幻灯片上读到了。我知道“==”用于引用相等,这就是为什么我在这里问它,因为我没有理解这句话背后的逻辑。你需要问你的老师这句话的意思是什么,因为它对于Java来说绝对是垃圾。即使我考虑允许操作符重载的语言也是似是而非的。