在阅读很多文章时,我可以弄清楚==比较两个操作数是否指向同一个对象。
它如何与原始数据类型一起使用。
它是否比较操作数的值?
对于原始数据类型和类,==的工作方式不同吗?
请澄清
答案 0 :(得分:2)
原语不是Objects
,因此没有equals(...)
方法。比较基元的相等性的唯一方法是使用==
运算符。
请注意,使用double
比较float
和==
值可能会非常棘手。
答案 1 :(得分:1)
“==”运算符实际上是在检查字符串对象(obj1和obj2)是否指向完全相同的内存位置。换句话说,如果obj1和obj2只是同一对象的不同名称,那么“==”运算符在比较2个对象时将返回true。
equals()方法实际上与“==”运算符的行为相同 - 这意味着它会检查两个对象是否引用内存中的相同位置。但是,equals方法实际上是为了比较2个对象的内容,而不是它们在内存中的位置。这意味着如果调用equals()方法来比较2个String对象,那么只要实际的字符序列相等,两个对象就被认为是相等的。
原始数据类型无法使用equal()进行比较,因为它们不是对象。 int,char可以使用 == 运算符进行比较。
但是当你比较float和double时,由于机器中的二进制转换,你可能得到不同的结果。 因此,在比较浮点值时,为了使所有值保持一致,包括特殊的Float.NaN值,Float.compare()是最佳选择。同样适用于双值。
答案 2 :(得分:0)
对于原始数据类型,您应该使用==
,它只是比较两个给定参数的值。
对于盒装原始数据类型,例如Long,Double,Integer,您应该使用equals
进行比较。如果使用==
,则仅比较引用相等性。