== and .equals() in java



在阅读许多文章时,我可以发现==比较两个操作数是否引用同一对象。

它如何处理基元数据类型。

它是否比较操作数的值?

==对基元数据类型和类的作用是否不同?

请澄清

基元不是Objects,因此没有equals(...)方法。比较基元是否相等的唯一方法是使用==运算符。

注意,用==比较doublefloat的值可能很棘手。

"=="运算符实际上是在检查字符串对象(obj1和obj2)是否引用了完全相同的内存位置。换句话说,如果obj1和obj2只是同一对象的不同名称,那么在比较这两个对象时,"=="运算符将返回true。

equals()方法的行为实际上与"=="运算符相同,这意味着它检查两个对象是否引用了内存中的同一位置。但是,equals方法实际上是用来比较两个对象的内容,而不是它们在内存中的位置。这意味着,如果您调用equals()方法来比较2个String对象,那么只要实际的字符序列相等,两个对象就被视为相等。

基元数据类型不能使用equal()进行比较,因为它们不是对象。int,char可以使用==运算符进行比较。

但当你比较浮点和双精度时,由于机器中的二进制转换,你可能会得到不同的结果。因此,在比较浮点值时,为了使所有值(包括特殊的float.NaN值)保持一致,float.compare()是最佳选项。这同样适用于双值。

对于基元数据类型,应该使用==,它只比较两个给定参数的值。

对于装箱的基元数据类型,如Long、Double、Integer,应使用equals进行比较。如果使用==,则它仅比较引用相等性。

最新更新